기본적으로 출력을 파일에 쓰려고하는데 제대로 인코딩되지 않았기 때문에이 접근법에 문제가 있음을 발견했습니다. JS가 UCS-2 인코딩 ( source , source ) 을 사용하는 것처럼 보이기 때문에이 솔루션을 한 단계 더 확장해야합니다.
나는 일반 텍스트에 어려움이 없었지만 아랍이나 한국어로 내려 갔을 때 출력 파일에 모든 문자가 없었지만 대신 오류 문자가 표시되었습니다
파일 출력 :
","10k unit":"",Follow:"Õ©íüY‹","Follow %{screen_name}":"%{screen_name}U“’Õ©íü",Tweet:"ĤüÈ","Tweet %{hashtag}":"%{hashtag} ’ĤüÈY‹","Tweet to %{name}":"%{name}U“xĤüÈY‹"},ko:{"%{followers_count} followers":"%{followers_count}…X \Ì","100K+":"100Ì tÁ","10k unit":"Ì è",Follow:"\°","Follow %{screen_name}":"%{screen_name} Ø \°X0",K:"œ",M:"1Ì",Tweet:"¸","Tweet %{hashtag}":"%{hashtag}
실물:
","10k unit":"万",Follow:"フォローする","Follow %{screen_name}":"%{screen_name}さんをフォロー",Tweet:"ツイート","Tweet %{hashtag}":"%{hashtag} をツイートする","Tweet to %{name}":"%{name}さんへツイートする"},ko:{"%{followers_count} followers":"%{followers_count}명의 팔로워","100K+":"100만 이상","10k unit":"만 단위",Follow:"팔로우","Follow %{screen_name}":"%{screen_name} 님 팔로우하기",K:"천",M:"백만",Tweet:"트윗","Tweet %{hashtag}":"%{hashtag}
나는의 정보했다 데니스 '솔루션 및 이 게시물에 내가 발견합니다.
내 코드는 다음과 같습니다.
function encode_utf8(s) {
return unescape(encodeURIComponent(s));
}
function decode_utf8(s) {
return decodeURIComponent(escape(s));
}
function ab2str(buf) {
var s = String.fromCharCode.apply(null, new Uint8Array(buf));
return decode_utf8(decode_utf8(s))
}
function str2ab(str) {
var s = encode_utf8(str)
var buf = new ArrayBuffer(s.length);
var bufView = new Uint8Array(buf);
for (var i=0, strLen=s.length; i<strLen; i++) {
bufView[i] = s.charCodeAt(i);
}
return bufView;
}
이를 통해 인코딩 문제없이 파일에 내용을 저장할 수 있습니다.
작동 방식 : 기본적으로 UTF-8 문자를 구성하는 단일 8 바이트 청크를 가져와 단일 문자로 저장합니다 (따라서 이러한 방식으로 작성된 UTF-8 문자는 이러한 문자 중 1-4 개로 구성 될 수 있음). UTF-8은 길이가 1-4 바이트 인 형식으로 문자를 인코딩합니다. 우리가 여기서하는 일은 URI 컴포넌트에서 찌르기를 인코딩 한 다음이 컴포넌트를 가져와 해당 8 바이트 문자로 변환하는 것입니다. 이런 식으로 1 바이트 이상의 UTF8 문자로 제공되는 정보를 잃지 않습니다.
Int8Array
ArrayBufferView
대괄호 표기법을 사용하여 문자를 복사string[i] = buffer[i]
하거나 그 반대로 할 수 있습니다.