Saya menemukan saya punya masalah dengan pendekatan ini, pada dasarnya karena saya mencoba untuk menulis output ke file dan itu tidak dikodekan dengan benar. Karena JS tampaknya menggunakan pengkodean UCS-2 ( sumber , sumber ), kita perlu memperluas solusi ini selangkah lebih maju, inilah solusi saya yang ditingkatkan yang bekerja untuk saya.
Saya tidak mengalami kesulitan dengan teks umum, tetapi ketika itu ke bahasa Arab atau Korea, file output tidak memiliki semua karakter tetapi sebaliknya menunjukkan karakter kesalahan
Output file:
","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}
Asli:
","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}
Saya mengambil informasi dari solusi dennis dan posting ini saya temukan.
Ini kode saya:
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;
}
Ini memungkinkan saya untuk menyimpan konten ke file tanpa masalah penyandian.
Cara kerjanya: Pada dasarnya dibutuhkan potongan 8-byte tunggal yang menyusun karakter UTF-8 dan menyimpannya sebagai karakter tunggal (oleh karena itu karakter UTF-8 yang dibangun dengan cara ini, dapat disusun oleh 1-4 karakter ini). UTF-8 mengkodekan karakter dalam format yang panjangnya bervariasi dari 1 hingga 4 byte. Apa yang kami lakukan di sini adalah mengkodekan sengatan dalam komponen URI dan kemudian mengambil komponen ini dan menerjemahkannya dalam karakter 8 byte yang sesuai. Dengan cara ini kami tidak kehilangan informasi yang diberikan oleh karakter UTF8 yang panjangnya lebih dari 1 byte.
Int8Array
ArrayBufferView
, mungkin saja menggunakan notasi braket untuk menyalin karakterstring[i] = buffer[i]
dan sebaliknya.