>웹 프론트엔드 >JS 튜토리얼 >JScript_javascript 기술에서 파일 인코딩을 결정하기 위해 ADODB.Stream을 사용하는 코드

JScript_javascript 기술에서 파일 인코딩을 결정하기 위해 ADODB.Stream을 사용하는 코드

WBOY
WBOY원래의
2016-05-16 19:03:571424검색

처음에는 ASCII 인코딩을 사용하여 텍스트 데이터를 읽고 이진 데이터 읽기를 시뮬레이션했지만 문자 인코딩이 127보다 크면 나머지 128에 해당하는 128보다 작은 값만 가져옵니다. 그래서 ASCII 인코딩은 불가능합니다.

계속 검색하다가 CodeProejct.com에서 "JScript를 사용하여 바이너리 파일 읽기 및 쓰기"라는 기사를 찾았는데, 여기에는 제가 필요한 내용이 정확히 포함되어 있었습니다.
장애물을 해결한 후에는 ADODB.Stream 객체를 사용하여 파일의 처음 2바이트를 읽은 다음 이 2바이트를 기반으로 파일의 인코딩 식별을 시작할 차례입니다. 파일 인코딩이 What's up인지 확인합니다.

UTF-8 파일에 BOM이 있는 경우 처음 2바이트는 0xEF 및 0xBB입니다. 예를 들어 유니코드 파일의 처음 2바이트는 0xFF 및 0xFE입니다. 부호화.

ADODB.Stream이 문자를 읽을 때 일대일 대응이 없다는 점에 유의해야 합니다. 즉, 바이너리 데이터가 0xEF인 경우 읽은 문자는 통과한 후 0xFE가 되지 않습니다. charCodeAt. 이 대응표는 위에서 언급한 기사에서 찾을 수 있습니다.

프로그램 코드:


function CheckEncoding( 파일 이름) {
var stream = new ActiveXObject("ADODB.Stream") ​​
stream.Mode = 3
stream.Type = 2; ;
스트림 .Charset = "437";
stream.LoadFromFile(파일 이름)
var bom = escape(stream.ReadText(2))
switch(bom) / / 0xEF,0xBB = > UTF-8
케이스 "%u2229%u2557":
인코딩 = "UTF-8"
// 0xFF,0xFE => ; 🎜> 케이스 "� %u25A0":
// 0xFE,0xFF => 유니코드 빅 엔디안
케이스 "%u25A0":
인코딩 = "유니코드"
// 알 수 없음 GBK만 사용하면 대부분의 경우 중국어가 올바르게 처리됩니다.
                                 delete stream;
stream = null;
}


이렇게 하면 필요할 때 CheckEncoding 함수를 호출하여 파일의 인코딩을 얻을 수 있습니다.
이 글이 도움이 되셨으면 좋겠습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.