字母ł
(带尾巴的l)在Unicode中表示为U + 0142,十六进制:xc5 x82,十进制:197 130。
我在JavaScript中有一个数组:
var b = [197, 130];
如何从中创建字符串ł
?
我在JSFiddle上试过this:
var s;
s = String.fromCharCode(b[0], b[1]);
但是s
等于Å
(A有顶部的东西)。我也尝试了其他方法,但我无法得到正确的结果。
答案 0 :(得分:1)
hex:xc5 x82
这是ł
的UTF-8字节编码。
s = String.fromCharCode(b [0],b [1]);
这是将每个字节解释为单个字符,它使用ISO-8859-1编码有效地解码字节,因为这种编码恰好与Unicode的前256个字符共享相同的数字。
有一个巧妙的JavaScript技巧可以将每个字符代表相同数字字节的字符串转换为UTF-8解码字符串:通过遗留escape()
内置函数发送它,这是一个破坏URL编码器,然后使用真实的URL解码器decodeURIComponent
解码它。
因此,对于任何UTF-8字节数组,您可以通过执行以下操作来获取解码的Unicode字符串:
function utf8BytesToString(b) {
return decodeURIComponent(escape(String.fromCharCode.apply(null, b)));
}
utf8BytesToString([0xc5, 0x82]) // "ł"
答案 1 :(得分:0)
对于两个字节序列,您需要使用掩码110xxxxx 10xxxxxx
,它指的是:
var bytes = [0xc5, 0x82]; // [197, 130]
String.fromCharCode(((bytes[0] & 0x1f) << 6) | (bytes[1] & 0x3f)); // "ł"