匯東網


ASCII、GB2312、GBK、Unicode、UTF-8、ANSI 编码详解整理

[編輯] [转简体]
|
作者:huidong | 分類:【編程】編碼
[ 41 瀏覽 0 評論 5 贊 3 踩 ]

概要

正文

ASCII    美国信息交换标准代码(最早的编码规则)

使用 7 位二进制数(最高位二进制为 0)来表示所有的大写和小写字母、数字 0 到 9、标点符号以及在美式英语中使用的特殊控制字符,总共为128个。例如:

二进制字符说明
0000 0000NUL空字符
0010 0000(space)空格键
0011 00000字符0
0110 0001a字符a
0111 1111DEL (delete)删除


GB2312    汉字内码扩展规范

GB2312 编码,就是在 ASCII 编码的基础上进行扩充的,它规定如下:

ASCII 的字符完整地包含在 GB2312 里,编码不变,仍然是以 0 开头,用一个字节来表示一个字符;对于 ASCII 没有的字符,就用 1 开头来区分,用两个字节合起来表示一个字符。

这样,在解码的时候,遇到字节是以 0 开头的,就知道这一个字节就表示了一个字符;遇到字节是以 1 开头的,就知道要加上下一个字节合起来表示一个字符。这样就在 GB2312 中既把 ASCII 的字符包含了进来,又能将它们区分出来,能达到兼容的效果了。

GB2312 能够表示很多简体汉字,但是繁体怎么办呢?台湾群众很不满啊,于是也自己搞了一套编码,于是 BIG-5 诞生了。此外,GB2312 仅仅可以表示 6000 多个常用汉字,那么其它不常用的怎么办?于是进行了扩展,把之前 GB2312 中没有利用的位好好利用起来,就成了 GBK,其中 K 为“扩展”的“扩”(kuo4)。GBK 共收入 21886 个汉字和图形符号,包括:

  • GB 2312 中的全部汉字、非汉字符号。

  • BIG-5 中的全部汉字。

  • 与 ISO 10646 相应的国家标准 GB 13000 中的其它 CJK 汉字,以上合计 20902 个汉字。

  • 其它汉字、部首、符号,共计 984 个。

GBK 向下与 GB 2312 完全兼容,向上支持 ISO 10646 国际标准,在前者向后者过渡过程中起到的承上启下的作用。


Unicode    兼容所有国家文字的字符集(万国码、统一码)

由于世界国家众多,语言差别也很大。ISO(国际标准化组织)决定定义一套编码方案来解决所有国家的编码问题。ISO对 Unicode 编码规定如下:

每个字符必须使用两个字节,即用 16 位二进制来表示所有的字符,对于 ASCII 编码表里的字符,保持其编码不变,只是将长度扩展到了 16 位,其他国家的字符全部统一重新编码。

由于传输 ASCII 表里的字符时,实际上可以只用一个字节就可以表示,所以,这种编码方案在传输数据比较浪费带宽,存储数据比较浪费硬盘,为了解决这个问题,就在 Unicode 的基础上,定义了一套编码规则,这个新的编码规则就是UTF-8(Universal Character Set/Unicode Transformation Format - 8),采用 1-4 个字节进行传输和存储数据。

具体规则:

1)对于单字节的符号,字节的第一位设为 0 ,后面7位为这个符号的 Unicode 码。因此对于 英语字母,UTF-8 编码和 ASCII 码是相同的。

2)对于 n 字节的符号(n > 1),第一个字节的前 n 位都设为 1 ,第 n + 1 位设为 0 ,后面字节的前两位一律设为 10 。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

UTF-8区分每个字符的开始是根据字符的高位字节来区分的,方式如下表:

二进制表达字符所需字节数
0xxxxxxx一个字节
110xxxxx 10xxxxxx二个字节
1110xxxx 10xxxxxx 10xxxxxx三个字节
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx四个字节


ANSI    多字节字符集

为了使计算机支持多种语言,不同的国家和地区制定了不同的标准。

ANSI表示英文字符时用一个字节,表示中文用两个字节。由此产生了 GB2312,BIG-5,JIS 等各自的编码标准。简体中文系统下,ANSI 编码可以是 GB2312 或者 GBK 编码,在日文操作系统下 ANSI 编码代表 JIS 编码,而韩文系统中 ANSI 编码其实是 EUC-KR 编码。

因此 ANSI 并不是某一种特定的字符编码,而是在不同的系统中,ANSI 表示不同的编码。Windows 系统通过 Windows code pages 的值来确定当前系统的编码方式。


参考资料

https://www.cnblogs.com/xtuz/p/12448200.html 

https://cloud.tencent.com/developer/article/1674073   

[ 5] [ 3]


 評論區  0 條評論

+ 添加評論