ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE的区别解读

      问题:

     1、编码问题经常给程序员带来一些困扰,比如编辑保存文件时,有不少字符集选项,应该选哪个呢,Unicode、utf-8、GB2312、ANSI又有什么关系呢?

     2、在简体中文系统下,ANSI 编码为什么会代表 GB2312 编码?

  

  为使计算机支持更多语言,通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如:汉字 ‘中’ 在中文操作系统中,使用 [0xD6,0xD0] 这两个字节存储。

  不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码。

  不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。

    编码演进史参考:

       0、 美国发明ANSI 的”Ascii”编码(American Standard Code for Information Interchange,美国信息互换标准代码),可以用不同字节来存储英语的文字

1、 我国 对ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。

2、 汉字包括繁体和各种字符,扩充产生了 GBK 编码,它包括了 GB2312 中的编码。

3、 为了表示国内各民族的语言字符,继续把 GBK 编码扩充为 GB18030 编码。

4、 每个国家出现了各种各样的编码,必须安装相应的编码,才能解释相应编码的内容。

5、 ISO 的组织创造了一种编码 UNICODE ,这种编码非常大,可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。

    

 

上一篇:c++出现“Debug Assertion Failed”


下一篇:“深度学习“汉字国标码GB2312