编码方式, 与整个网页应用息息相关, 是整个计算机系统中很重要的一环, 趁着有空赶紧总结一波.

更新


[2019-4-25]

Added

  • Initial release

[2019-5-8]

Changed

  • 更改换算/字节 -> 比特错误

Added

  • 新增Q&A章节
  • 新增UTF-8编码方式
  • 新增UTF-16

Changed

  • 更改UTF-8相关内容

一、前置


PS: 佛山这鬼天气, 热得雅痞

1.1 字串&字符&字节&比特

**duanzhaoyang**为例

1.1.1 表示

Target Description
‘duanzhaoyang’ 字串
‘d’ 字符

1.1.2 换算

1
2
3
①中文字符 = ②字节 = 十六比特

①英文字符 = ①字节 = ⑧比特

二、ASCII


2.1 优点

  • 对于128个字符的编码
  • 包括
    • 大小写字母
    • 无法打印的符号

2.2 缺点

  • 对于中文支持不友好
  • 会产生冲突

三、GB2312


3.1 优点

  • 解决ASCII的问题
  • 支持中文字符
  • 支持256 x 256个符号

3.2

  • 并不通用

四、Unicode


4.1 优点

  1. 通用
  2. 融入了世界上所有的符号

五、UTF-8


5.1 是什么?

  • Unicode的实现方式
  • 普遍使用的编码方式

5.2 怎么做?

如何实现UTF-8编码? 参考

5.2.1 第一步: 寻找字节数

  • 单字节
    • 第一位比特位设为0, 剩余打x
  • n字节
    • 第一个字节的前n位设为1, 第n + 1位设为0, 后续字节的前两位设为10

下面是示例:

单字节 两字节 三字节
0xxxxxxx 110xxxxx 10xxxxxx 1110xxxx 10xxxxxx 10xxxxxx

5.2.2 第二步: 补齐剩余码

给定中文字符的二进制: 100111000100101

将该二进制字符倒序从后往前插入上述x中, 多余位补0.

六、UTF-16


6.1 是什么?

对于所有字符, 统一采用2个字节保存

Q&A

Q: UnicodeUTF-8的区别和联系?

A: Unicode为一个字符集, 囊括了多国的多种语言文字, UTF-8是根据该字符集实现的一种编码方式. 参考逼乎.