Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将unicode数字数组读取为unicode字符串(在javascript中)_Javascript_Unicode - Fatal编程技术网

将unicode数字数组读取为unicode字符串(在javascript中)

将unicode数字数组读取为unicode字符串(在javascript中),javascript,unicode,Javascript,Unicode,字母ł(带尾的l)在Unicode中表示为U+0142,十六进制:xc5 x82,十进制:197 130 我有一个JavaScript数组: var b = [197, 130]; 如何从中生成字符串ł 我在JSFIDLE上试过: var s; s = String.fromCharCode(b[0], b[1]); 但是s等于Å(A上面有个东西)我也尝试了小提琴中的其他方法,但无法得到正确的结果。对于两字节序列,您需要使用掩码,掩码指: var bytes = [0xc5, 0x82];

字母
ł
(带尾的l)在Unicode中表示为U+0142,十六进制:xc5 x82,十进制:197 130

我有一个JavaScript数组:

var b = [197, 130]; 
如何从中生成字符串
ł

我在JSFIDLE上试过:

var s;
s = String.fromCharCode(b[0], b[1]);

但是
s
等于
Å
(A上面有个东西)
我也尝试了小提琴中的其他方法,但无法得到正确的结果。

对于两字节序列,您需要使用掩码,掩码指:

var bytes = [0xc5, 0x82];  // [197, 130]

String.fromCharCode(((bytes[0] & 0x1f) << 6) | (bytes[1] & 0x3f));  // "ł"
var bytes=[0xc5,0x82];//[197, 130]
String.fromCharCode((字节[0]&0x1f)
十六进制: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]) // "ł"