读取一个unicode数字作为unicode字符串(在javascript中)

时间:2014-05-07 09:46:27

标签: javascript unicode

字母ł(带尾巴的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有顶部的东西)。我也尝试了其他方法,但我无法得到正确的结果。

2 个答案:

答案 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));  // "ł"