Java程序员遇上字符乱码6-说说常见中文字符集

中文字符集,都是GB开头的,GB=Guo Biao=国标=国家标准,GBK中K指“扩展”的意思。

常见的中文字符集:GB2312 < GBK < GB18030,下图为其包含关系,可表示字符 从内到外增加。


Java程序员遇上字符乱码6-说说常见中文字符集_第1张图片

刚开始时(1980年):GB2312 编码,它包括了 Ascii 中的编码,还扩充可以表示6000多个常用汉字。

后来:GBK 编码,它包括了 GB2312 中的编码,还扩充包含繁体和各种字符等。

再后来:GB18030 编码,包括GBK中的编码,还扩充包含少数名族的字符。

以后的以后:.......

.......不断扩充.......

         .......不断扩充.......

                   .......不断扩充.......

综合:GB2312 和 GBK,对于英文等Ascii 字符集中的字符用一个字节存储。其他后来扩充的中文字符则是 两个字节。

注意:

1.Big5是与GB2312同时期的一种台湾地区繁体字的编码格式。后来GBK编码的制定,把Big5用的繁体字也包含进来(但编码不兼容,所以不是一个体系,就没有画在上图中)。

2.  全角和半角之分:

历史:是由于中文文字 比 Ascii字符 宽(大只),所以打印文件时容易不整齐(不太好看),因此设计了 用两个字节(全角)来表示 Ascii字符。这在平时用的输入法中可以切换。

全角英文:两个字节  (大只)

半角英文:一个字节  (小只)

然而平时我们只能用半角来编程。

3.同一个编码文件里,怎么区分ASCII和中文编码呢?从ASCII表我们知道标准ASCII只有128个字符,0~127即0x00~0x7F(0111 1111)。所以区分的方法就是,高字节的最高位为0则为ASCII,为1则为中文。

你可能感兴趣的:(Java程序员遇上字符乱码6-说说常见中文字符集)