数据编码
来自高中笔记
更多操作
方便存储、检索和使用的数据形式
字符编码
美国信息交换标准代码
美国信息交换标准码(American Standard Code for Information Interchange,ASCII)为国际标准 ISO 646。 仅可显示英文字母、数字及英文标点符号。
不同的国家和地区制定了不同的字符集和字符编码标准以显示更多的语言文字。但由于缺乏统一规划,这些字符编码有可能存在冲突,例如:
在常见的 GB 2312(中国大陆的中文字符集)和 BIG5(台湾、香港等地区使用的繁体中文字符集)编码标准中,同一个编码数值 0xA6A1 所代表的字符是不同的:
- 在 GB 2312 编码中,字节 0xA6A1 代表中文符号“丶”(一个点)。
- 在 BIG5 编码中,同一个字节 0xA6A1 却代表符号“﹢”(一个小加号)。
统一字符编码
为了解决不同字符编码之间相互冲突、无法通用的问题,提出了统一字符编码(Unicode)的概念。
Unicode 为世界上几乎所有已知文字和符号分配了唯一的编号,称为码点(Code Point),通常表示为 U+XXXX 的形式。例如:
- 字符 “A” 的 Unicode 码点为
U+0041 - 汉字 “中” 的 Unicode 码点为
U+4E2D
Unicode 本身只规定字符与码点的对应关系,并不规定具体的存储方式。
Unicode 的编码方式
为了在计算机中存储 Unicode 码点,需要将其转换为具体的字节序列,这种转换方式称为 Unicode 编码方式,常见的有:
- UTF-8
- UTF-16
- UTF-32
UTF-8 编码
UTF-8(Unicode Transformation Format – 8-bit)是一种可变长度编码方式,也是目前互联网上使用最广泛的字符编码。
其特点包括:
- 使用 1~4 个字节表示一个字符
- 对 ASCII 字符完全兼容(ASCII 字符仍使用 1 个字节)
- 不同字符使用不同长度编码,节省存储空间
- 不存在字节序问题(无大小端之分)
例如:
- 字符 “A” 在 UTF-8 中编码为
41 - 汉字 “中” 在 UTF-8 中编码为
E4 B8 AD
由于其兼容性好、效率高,UTF-8 成为现代操作系统、网页和程序中最常用的字符编码。
字符集与字符编码的区别
- 字符集:定义“有哪些字符”,以及每个字符对应的编号(如 ASCII、Unicode)。
- 字符编码:定义“字符如何存储”,即如何将字符编号转换为字节序列(如 UTF-8、UTF-16)。
简单来说:
字符集回答“是什么字符”,字符编码回答“怎么存储”。