编码方式, 与整个网页应用息息相关, 是整个计算机系统中很重要的一环, 趁着有空赶紧总结一波.
更新
[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 | ①中文字符 = ②字节 = 十六比特 |
二、ASCII
2.1 优点
- 对于
128
个字符的编码 - 包括
- 大小写字母
- 无法打印的符号
2.2 缺点
- 对于中文支持不友好
- 会产生冲突
三、GB2312
3.1 优点
- 解决
ASCII
的问题 - 支持
中文
字符 - 支持
256 x 256
个符号
3.2
- 并不通用
四、Unicode
4.1 优点
- 通用
- 融入了世界上所有的符号
五、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:
Unicode
和UTF-8
的区别和联系?
A: Unicode
为一个字符集, 囊括了多国的多种语言文字, UTF-8
是根据该字符集实现的一种编码方式. 参考逼乎.