首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【计算机基础】utf6、utf16、utf32

而今天要解决的问题也只有一个 utf8、utf16、utf32 都是什么鬼!...那就是 utf8、utf16 、utf32 做的事情了,他们各自都有不同的规则去存储字符 比如会存在下面的对话 UTF-8 我规定一个字符存1个字节就好了 我不行,我偏要一个字符存两个字节 UTF-16...好的,现在我们已经把Unicode 和 字符的关系讲得差不多了,前面也说了,Unicode 只规定了 字符的编码,但是没有规定 这个字符要存多少字节,而 utf8、utf16、utf32 做的就是这个事了...下面我们先说 utf32,再说utf8,再说utf16 UTF-32 UTF-32 规定了每个字符使用四个字节存储,但是这样会十分浪费,因为对于英文等一些简单字符来说,一个字节就能表示了 比如说字母 A...为什么要使用4个字节,因为utf16的编码规则,需要占用多一个字节的空间,你可以当它是占位符吧 接下来先简单说一下规则,再说一下其中我有问题并且逻辑探索的过程 基本平面的字符使用两字节,直接翻译成二进制

1.1K10
您找到你想要的搜索结果了吗?
是的
没有找到

本文带你深入理解 String Unicode UTF8 UTF16

UTF16的本质回到本文开头的问题,为什么'‍♂️'.length === 5,但'‍♂'.length === 4呢?...你需要知道在JS中,字符串使用了UTF16编码(其实本来是UCS-2,UTF16是UCS-2的扩展)。为什么JS的字符串不用UTF8?因为JS诞生(1995)时,UTF8还没出现(1996)。...也就是说,在UTF16中,遇到110110一定是4字节UTF16的前2字节的前缀,遇到110111一定是4字节UTF16的后2字节的前缀,其它情况,一定是2字节UTF16。...这样,通过损失了部分可表述字符,UTF16也成为了「前缀码」。JS中的字符串在JS中,'‍♂️'.length算的就是这个字符的UTF16占用了多少个字节。...我开发了个工具,用于解析字符串,把它的UTF8二进制和UTF16二进制都展示了出来。

5.7K141
领券