首页
学习
活动
专区
圈层
工具
发布

【计算机基础】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.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    本文带你深入理解 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二进制都展示了出来。

    6.1K141

    【YashanDB 知识库】GBK 库,生僻字插入 nvarchar2 字段后乱码问题

    2、使用 yasdb client 库接口,yacBindParameter 接口提供了 utf16 编码插入数据方式。...1、服务端收到客户端的数据,如下图C1D9 GBK(临) 193 217BAA3 GBK(海) 186 1633F 生僻字丢失 为 632、insert 时,yasdb 中数据的字符4E34 utf16...(临)78 526D77 utf16( 海)109 1193F3、客户终端与客户端编码不同时,存储的数据是否有问题呢?...utf8 的终端,gbk 的 yasql,gbk 的服务器情况下,插入汉字后, 数据是 utf8 编码,但是当成 gbk 编码转换成 utf16,导致存储的数据不对。...0x79(121) 0x94(148) 0x46(107) 0xB8(134) ,存储的不是'艳梅'的 utf16 编码,而是'艳梅'utf8 编码当成 gbk 编码转换后的 utf16 编码。

    30710

    YashanDB 知识库|GBK 库插入生僻字乱码?别忽视编码转换这一环

    此时如果输入了 GBK 无法识别的字符,转换将失败,表现为:数据存入前已被替换为问号(0x3F);nvarchar2 类型在服务端最终被误转为错误的 utf16 编码。...方式二:使用yasdb客户端 API 进行 UTF16 插入YashanDB 提供的 yacBindParameter 接口支持传入 utf16 编码的参数,可直接插入生僻字,无编码转换问题。...【编码转换机制说明】插入(INSERT)流程:终端(UTF8) → yasql(GBK) → 服务端(GBK) → 存储为 UTF16若 yasql 与终端编码不一致,转换失败概率高,最终入库的 UTF16...查询(SELECT)流程:服务端(UTF16) → yasql(GBK) → 终端(UTF8)只有终端与 yasql 保持编码一致,才能正常显示查询结果。【推荐做法总结】

    23100
    领券