let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);
alert( new TextDecoder().decode(uint8Array) ); // 你好这个编码怎么会变成一个亚洲字符呢?
据我所知,UTF-8是8位。因此,如果我看utf-8字符集地图,那么我没有任何亚洲字符,直到255个。
关于比特的调查
[228, 189, 160, 229, 165, 189].map(i => parseInt(i).toString(2))
// ["11100100", "10111101", "10100000", "11100101", "10100101", "10111101"] '你好'.split('').map((e,index) => '你好'.charCodeAt(index).toString(2) )
// ["100111101100000", "101100101111101"]对我来说是个谜:
我遗漏了什么吗?请随时纠正我
发布于 2021-01-06 03:23:18
问了这个问题后,我觉得有点傻。
通过UTF-8 RFC和google进行了一点探索。我发现我对UTF-8的理解是错误的。
我以为UTF-8最多有8位,但那是错的。
在现实中
UTF-8是一种可变长度的编码,每个字符至少有8位.代码点较高的字符将占用多达32位。
这很有帮助:UTF-8能编码多少个字符?
https://stackoverflow.com/questions/65585672
复制相似问题