首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有亚洲字符的Javascript TextDecoder中,解码是如何工作的?

在带有亚洲字符的Javascript TextDecoder中,解码是如何工作的?
EN

Stack Overflow用户
提问于 2021-01-05 19:54:18
回答 1查看 234关注 0票数 0
代码语言:javascript
复制
let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);

alert( new TextDecoder().decode(uint8Array) ); // 你好

这个编码怎么会变成一个亚洲字符呢?

据我所知,UTF-8是8位。因此,如果我看utf-8字符集地图,那么我没有任何亚洲字符,直到255个。

关于比特的调查

  1. 为输入查找位
代码语言:javascript
复制
    [228, 189, 160, 229, 165, 189].map(i => parseInt(i).toString(2))
    // ["11100100", "10111101", "10100000", "11100101", "10100101", "10111101"]
  1. 为输出查找位
代码语言:javascript
复制
    '你好'.split('').map((e,index) => '你好'.charCodeAt(index).toString(2) )
    // ["100111101100000", "101100101111101"]

对我来说是个谜:

  1. 输入中的总比特为48,而输出中的总比特为30。为什么?
  2. 此外,位模式匹配在某些地方,但不是整体。就像输入位数组中的第3和第6元素一样,输出位数组与输出位数组匹配。

我遗漏了什么吗?请随时纠正我

EN

回答 1

Stack Overflow用户

发布于 2021-01-06 03:23:18

问了这个问题后,我觉得有点傻。

通过UTF-8 RFC和google进行了一点探索。我发现我对UTF-8的理解是错误的。

我以为UTF-8最多有8位,但那是错的。

在现实中

UTF-8是一种可变长度的编码,每个字符至少有8位.代码点较高的字符将占用多达32位。

这很有帮助:UTF-8能编码多少个字符?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65585672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档