字符集基础
计算机只认识 0 和 1。无论在内存还是外存,我们看到的文字、图片、视频,在机器里都是二进制。不同字符对应二进制的规则,就是字符编码;编码的集合称为字符集。
要准确处理各种文字,必须先编码。常见的有 ASCII、GB***、Unicode。
一、ASCII 编码
ASCII(American Standard Code for Information Interchange)是基于拉丁字母的电脑编码系统,主要用于显示现代英语和其他西欧语言,是最通用的单字节编码。
它收录空格及 94 个「可印刷字符」,够英语用。其它使用拉丁字母的语言(主要是欧洲)还有附加符号字母,可以用 ASCII 及控制字符以外的区域来存。扩充 ASCII 为不同国家和地区制定了十多套(均为拉丁字符集,高位为 1 的 8 位代码),称为 ISO 8859,又称扩充 ASCII 字符集。Latin1 是 ISO-8859-1 的别名。
二、GBK 等汉字编码
ASCII 最大的缺点是能显示的字符有限:西欧语言勉强能扩,其它语言就无能为力。计算机用得越广,这个缺陷越明显,各国必须设计符合本国的编码。要显示中文,就要把汉字转成计算机能接受的数字。
-
GB2312:用于汉字处理、汉字通信等系统之间的信息交换,通行于中国大陆。 -
GBK:全称《汉字内码扩展规范》,向下兼容 GB2312,向上支持 ISO 10646.1,是前者向后者过渡的承上启下标准。
三、Unicode 编码
各国编码互不兼容(中文就有 GB2312、GBK、GB18030),本地没问题,一上网就乱码。为解决这个问题出现了 Unicode(统一码、万国码、单一码):为每种语言的每个字符设定统一且唯一的二进制编码,满足跨语言、跨平台的文本转换和处理。
Unicode 是字符集,实现方式有多种,如 UTF-8、UTF-16。互联网上用得最广的是 UTF-8;UTF-16、UTF-32 在网上基本不用。再强调一遍:UTF-8 是 Unicode 的实现方式之一。
| 编码 | 特点 | 适用 |
|---|---|---|
| ASCII | 单字节;空格 + 94 可印刷字符 | 英语;扩充为 ISO 8859 / Latin1 |
| GB2312 / GBK | GBK 向下兼容 GB2312 | 中文信息交换与内码扩展 |
| Unicode / UTF-8 | 统一码;UTF-8 是实现方式之一 | 跨语言、跨平台,互联网最常用 |
一句话总结:字符集是「字符怎么变成二进制」的规则;本地可用 GBK,上网请用 Unicode 的 UTF-8,避免乱码。
转载请注明来源:字符集基础







