Temelde bir dosyaya çıktı yazmaya çalışıyorum ve düzgün kodlanmamış olduğundan, bu yaklaşımla ilgili sorunlar yaşadım bulundu. JS, UCS-2 kodlamasını ( kaynak , kaynak ) kullanıyor gibi göründüğünden , bu çözümü bir adım daha uzatmamız gerekiyor, işte benim için çalışan gelişmiş çözümüm.
Genel metinle ilgili hiçbir sorun yaşamadım, ancak Arap veya Korece'ye düştüğünde, çıktı dosyasında tüm karakterlere sahip değil, bunun yerine hata karakterleri gösteriliyordu
Dosya çıktısı:
","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}
Orijinal:
","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}
Bilgileri dennis'in çözümünden aldım ve bu yazıyı buldum.
İşte benim kod:
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;
}
Bu, içeriği kodlamadan bir dosyaya kaydetmeme izin veriyor.
Nasıl çalışır: Temel olarak bir UTF-8 karakteri oluşturan tek 8 baytlık parçaları alır ve bunları tek karakter olarak kaydeder (bu nedenle bu şekilde oluşturulmuş bir UTF-8 karakteri, bu karakterlerin 1-4'ünden oluşabilir). UTF-8, karakterleri 1 ila 4 bayt uzunluğunda değişen bir biçimde kodlar. Burada yaptığımız, bir URI bileşenindeki sokmayı kodlamak ve daha sonra bu bileşeni alıp karşılık gelen 8 baytlık karaktere çevirmektir. Bu şekilde UTF8 karakterleri tarafından 1 bayttan uzun verilen bilgileri kaybetmeyiz.
Int8Array
ArrayBufferView
karakterleri kopyalamak için dirsek notasyonunu kullanmak mümkün olabilirstring[i] = buffer[i]
.