2017-07-07 83 views
1

我在Java中的功能,我需要轉換爲JavaScript和包含此行:等效於JavaScript的Java的的getBytes的

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

ttText是字符串。我需要這樣做。我需要獲取在Cp1250(windows-1250)中編碼的字符串的字節,修改那些字節,然後將其轉換回字符串。有沒有辦法如何在JavaScript中做到這一點?

我發現了例如TextEncoderTextDecoder,但不久前對UTF-8的支持不同。

回答

0

試試這個。 https://mths.be/windows-1250

這看起來很有希望。它支持編碼和解碼。 您只需添加庫並使用這些方法即可。 var encodedData = windows1250.encode(text);

+0

謝謝,我發現這個,但它只是用於編碼/解碼。我需要得到實際的字節來修改它們。編碼爲字節 - >修改字節 - >解碼回來。 – samuelg0rd0n

+0

我有一個問題。如果修改編碼的字節,解碼後不會得到相同的結果。 –

+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ÁÂĂÄ'