字母 ł
(l 带尾部)在 Unicode 中表示为 U+0142,十六进制:xc5 x82,十进制:197 130。
我有一个 JavaScript 数组:
var b = [197, 130];
如何从中生成字符串ł
?
我试过this在 JSFiddle 上:
var s;
s = String.fromCharCode(b[0], b[1]);
但是s
等于Å
(A上面有东西)。
我还尝试了 fiddle 中的其他方法,但无法得到正确的结果。
最佳答案
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]) // "ł"
关于javascript - 将 unicode 数字数组读取为 unicode 字符串(在 javascript 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23514300/