page contents

Unicode、UTF-8、UTF-16、UTF-32的区别?

轩辕小不懂 发布于 2021-12-18 11:03
阅读 483
收藏 0
分类:WEB前端开发
  • js
  • 2684
    Nen
    Nen
    - 程序员

    (1)Unicode

    在说Unicode之前需要先了解一下ASCII码:ASCII 码(American Standard Code for Information Interchange)称为美国标准信息交换码。

    它是基于拉丁字母的一套电脑编码系统。

    它定义了一个用于代表常见字符的字典。

    2. UTF-16 概念: UTF-16也是Unicode编码集的一种编码形式,把Unicode字符集的抽象码位映射为16位长的整数(即码元)的序列,用于数据存储或传递。Unicode 字符的码位需要1个或者2个16位长的码元来表示,因此UTF-16也是用变长字节表示的。

    3. UTF-16 编码规则: 编号在 U+0000—U+FFFF 的字符(常用字符集),直接用两个字节表示。 编号在 U+10000—U+10FFFF 之间的字符,需要用四个字节表示。

    4. 编码识别 那么问题来了,当遇到两个字节时,怎么知道是把它当做一个字符还是和后面的两个字节一起当做一个字符呢? UTF-16 编码肯定也考虑到了这个问题,在基本平面内,从 U+D800 — U+DFFF 是一个空段,也就是说这个区间的码点不对应任何的字符,因此这些空 段就可以用来映射辅助平面的字符。 辅助平面共有 220 个字符位,因此表示这些字符至少需要 20 个二进制位。UTF-16 将这 20 个二进制位分成两半,前 10 位映射在 U+D800 — U+DBFF,称为高位(H),后 10 位映射在 U+DC00 — U+DFFF,称为低位(L)。这就相当于,将一个辅助平面的字符拆成了两个基本平面的字符来表 示。 因此,当遇到两个字节时,发现它的码点在 U+D800 —U+DBFF之间,就可以知道,它后面的两个字节的码点应该在 U+DC00 — U+DFFF 之间,这四个字 节必须放在一起进行解读。

    5. 举例说明 

    以 “

    请先 登录 后评论