我有一个Java函数,我需要转换为JavaScript并包含这一行:
byte[] bytes = ttText.getBytes(Charset.forName("Cp1250"));
ttText
是String。我需要做同样的事情。我需要获取在Cp1250(windows-1250)中编码的字符串的字节,修改这些字节然后将其转换回字符串。有没有办法在JavaScript中做到这一点?
我发现了例如TextEncoder和TextDecoder,但不久之前对UTF-8的不同编码的支持被删除了。
答案 0 :(得分:1)
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ÁÂĂÄ'
更新:Chrome和Firefox有TextDecoder作为实验性功能,但TextEncoder仅适用于UTF-8。
答案 1 :(得分:0)
试试这个。 https://mths.be/windows-1250
这看起来很有希望。它为编码和解码提供支持。 您需要做的就是添加库并使用方法。 var encodedData = windows1250.encode(text);