等価

2017-07-07 7 views
1

私はJavaScriptに変換する必要があり、Javaの機能を持っており、それは、この行が含まれています等価

byte[] bytes = ttText.getBytes(Charset.forName("Cp1250")); 

ttTextはStringです。私は同じことをする必要があります。私はCp1250(windows-1250)でエンコードされた文字列のバイトを取得する必要があります。これらのバイトを変更してに変換し、それを再び文字列に変換します。 JavaScriptでこれを行う方法はありますか?

たとえば、TextEncoderTextDecoderが見つかりましたが、UTF-8とは異なるエンコーディングのサポートは以前から削除されていました。

答えて

0

これを試してください。 https://mths.be/windows-1250

これは有望です。エンコードとデコードの両方をサポートしています。 する必要があるのは、ライブラリを追加してメソッドを使用することだけです。 var encodedData = windows1250.encode(text);

+0

ありがとう、私もこれを見つけましたが、それはエンコード/デコードのためだけです。私はそれらを変更するために実際のバイトを取得する必要があります。バイトにエンコード - >バイトを変更する - >デコードバック。 – samuelg0rd0n

+0

私には1つの質問があります。エンコードされたバイトを変更すると、デコード後に同じ結果が返されることはありません。 –

+0

はい、もちろん、私は知っています。だから私はそれらを変更する必要があります。別の結果を得るために、これらのバイトに特定のマッピング関数を適用する必要があります。 – samuelg0rd0n

0
var cp1250 = '€ ‚ „…†‡ ‰Š‹ŚŤŽŹ ‘’“”•–— ™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙'; 

function encodeCP1250(text) { 
    var buf = []; 
    for (var i = 0; i < text.length; i++) { 
    var code = cp1250.indexOf(text[i]); 
    if (code >= 0) { 
     code += 128; 
    } else { 
     code = text.charCodeAt(i); 
    } 
    buf.push(code > 255 ? 32 : code); 
    } 
    return buf; 
} 

function decodeCP1250(buf) { 
    var text = ''; 
    for (var i = 0; i < buf.length; i++) { 
    var code = buf[i]; 
    text += code > 127 ? cp1250[code - 128] : String.fromCharCode(code); 
    } 
    return text; 
} 

var buf = encodeCP1250('AÁÂĂÄ'); // [65, 193, 194, 195, 196] 
var text = decodeCP1250(buf); // 'AÁÂĂÄ'