웹사이트의 러시아어 버전을 만들고 싶어하는 고객이 있습니다. 프런트엔드와 백엔드에 UTF-8 인코딩을 사용하지만 데이터베이스를 통해 생성된 정적 러시아어 정보가 깨져 있습니다. GB2312를 사용하여 표시하는 경우 데이터베이스를 통해 생성된 정적 러시아어 정보는 올바르게 표시되지만 템플릿 파일의 러시아어 텍스트가 깨집니다.
구체적인 특징은 다음과 같습니다.
1. 템플릿을 통해 일반적인 러시아어를 구현합니다.
2. 백엔드 데이터베이스를 통해 생성된 정적 러시아어 정보는 백엔드에서는 정상적으로 표시되지만 프런트엔드에서는 왜곡되어 표시됩니다.
3. 영어는 평범합니다.
주제와 관련된 유사하거나 다른 표현
FSO는 UTF-8로 인코딩된 파일을 작성합니다.
FSO는 어떻게 utf-8로 인코딩된 파일을 생성할 수 있습니까?
FSO에서 생성된 파일의 기본 인코딩 형식은 무엇입니까?
UTF-8 인코딩으로 변환하는 방법
FSO가 정적 웹 페이지를 생성하는 데 문제가 있습니다.
FSO를 사용하여 ASP에서 파일을 생성하는 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
함수 createfile(sfilename,scontent)
fso=server.CreateObject("scripting.filesystemobject")를 설정합니다.
f1=fso.opentextfile(sfilename,2,true,-1)을 설정합니다.
f1.write(콘텐츠)
f1.닫기
fso=아무것도 설정하지 않음
함수 종료
fso.opentextfile(sfilename,2,true,-1) 마지막 매개변수 -1은 인코딩 형식을 유니코드로 지정합니다. 인코딩 형식이 유니코드인 경우 웹 페이지는 UTF-16 little-endian을 표시합니다.
OpenTextFile 메서드
지정된 파일을 생성하고 생성된 파일을 읽거나 쓰는 데 사용할 수 있는 TextStream 객체를 반환합니다.
object.OpenTextFile(파일 이름[, iomode[, 생성[, 형식]]])
매개변수 개체, 필수입니다. FileSystemObjec 또는 Folder 객체의 이름이어야 합니다. FSO 입니다.
파일 이름, 필수입니다. 생성할 파일을 지정하는 문자열 표현식입니다. 여기에 sfilename이 있습니다.
선택적 매개변수인 iomode는 파일이 읽기, 쓰기 또는 추가에 사용되는지 여부를 나타냅니다. 기본값은 읽기의 경우 1, 쓰기의 경우 2, 추가의 경우 8입니다.
create, 선택적 매개변수, 파일이 존재하지 않는 경우 생성할지 여부, 기본값은 false입니다. 생성하려면 true로 설정하세요.
형식에서 매개변수는 다음 설정 중 하나일 수 있으며 기본값은 ASCII 형식이며 원하는 utf-8은 없습니다.
TristateUseDefault -2는 시스템 기본 형식으로 파일을 엽니다.
TristateTrue -1은 유니코드 형식으로 파일을 엽니다.
TristateFalse 0 ASCII 형식으로 파일을 엽니다.
FSO에는 세 가지 인코딩 속성만 있습니다. 시스템 기본값은 유니코드와 ASCII이며 원하는 utf-8이 없습니다. 따라서 중국 시스템에서 FSO 구성 요소를 사용하여 생성된 파일은 일반적으로 gb2312 인코딩 형식입니다.
솔루션 1
GB2312 인코딩에는 러시아어 문자가 포함되어 있습니다. 페이지가 중국어 간체 GB2312로 설정되어 있으면 러시아어가 정상적으로 표시될 수 있습니다. 그러나 중국어는 기본적으로 "Song Ti" 표시로 설정되어 있으므로 "Song Ti"에서는 러시아어가 전자 문자로 표시됩니다. 보기 흉하므로 "New Rome" 또는 "Arial" 등과 같은 외국 글꼴을 사용해야 합니다. 중국 고객은 거기에서 의사소통을 할 수 있지만 실제 러시아인이 웹을 탐색할 때 중국어를 다운로드하여 설치해야 하는데 이는 이상적이지 않으며 웹 탐색을 포기하게 만들 수도 있습니다.
솔루션 2
ASP는 오래된 언어이기 때문에 일부 기능은 UTF-8에 대한 지원이 매우 부족합니다. FSO는 필요한 파일 형식을 지정할 수 없기 때문에 UTF-8 형식으로 파일을 직접 생성하는 것을 지원하지 않습니다. 예를 들어 UTF-8 형식으로 파일을 생성하려는 경우 일반적으로 사용되는 Scripting.FileSystemObject 개체를 사용할 수 없습니다. 우리는 생각을 바꾸고 Adodb.Stream을 사용해야 합니다. 이것이 zblog와 같은 일부 현재 블로그 프로그램이 구현되는 방식입니다.
파일을 생성하는 Scripting.FileSystemObject 개체의 기능은 다음과 같습니다.
FileSystemObject.CreateTextFile(파일 이름[,overwrite[,unicode]])
유니코드 속성은 다음과 같이 설명됩니다.
선택 과목. 유니코드 또는 ASCII 파일 형식으로 파일을 생성할지 여부를 나타내는 부울 값입니다. 파일이 유니코드 파일 형식으로 생성되면 이 값은 True이고, 파일이 ASCII 파일 형식으로 생성되면 False입니다. 이 부분을 생략하면 ASCII 파일이 생성된 것으로 간주됩니다.
안타깝게도 이 기능을 사용하여 UTF-8 형식 파일을 만들 수는 없습니다.
ADODB.Stream 객체를 사용하세요. 사용법은 아래를 참조하세요.
다음과 같이 코드 코드를 복사합니다.
objStream = Server.CreateObject("ADODB.Stream") 설정
objStream 사용
.열려 있는
.Charset = "utf-8"
.위치 = objStream.Size
.WriteText=str
.SaveToFile server.mappath("/sitemap.xml"),2
.닫다
끝
objStream = 없음으로 설정
부록: ASCII, 유니코드 및 UTF-8 소개
ASCII는 영문 대문자와 소문자, 숫자, 제어 문자 등을 포함하는 문자 집합입니다. 1바이트로 표현되며 범위는 0~127입니다.
ASCII로 표현되는 문자는 매우 제한되어 있기 때문에 각 국가나 지역에서는 이를 기반으로 고유한 문자 집합을 제안해 왔습니다. 예를 들어 중국에서 널리 사용되는 GB2312는 한자에 대한 인코딩을 제공하며 2바이트로 표시됩니다.
이러한 문자 집합은 서로 호환되지 않으며, 동일한 숫자가 다른 문자를 나타낼 수 있어 정보 교환에 문제가 발생할 수 있습니다.
유니코드는 전 세계의 모든 문자를 고유한 숫자(코드 포인트)로 매핑하는 문자 집합입니다. 예를 들어 문자 a에 해당하는 숫자 0x0041입니다. 유니코드는 아직 개발 중이며 점점 더 많은 문자를 포함하고 있습니다.
유니코드로 표현된 문자를 저장할 때 유니코드로 인코딩된 문자를 표현하기 위해 2바이트를 사용하는 UCS-2와 같은 특정 인코딩 방법이 필요합니다. UTF-8은 유니코드 문자 집합의 또 다른 인코딩 방법으로 최대 6바이트까지 가변 길이를 가지며, 127자 미만의 문자는 1바이트로 표현되므로 결과가 매우 다릅니다. 호환성이 좋고, ASCII 인코딩의 영어 텍스트를 수정 없이 UTF-8 인코딩으로 처리할 수 있어 널리 사용됩니다.