目录
一、字符编码
ASCII编码:
使用7位二进制数表示128个字符。
这些字符包括英文字母(大写和小写)、数字、标点符号和一些控制字符。其中,大写字母的编码从0x41
('A')到0x5A
('Z'),小写字母的编码从0x61
('a')到0x7A
('z')。
一个字节表示一个字符,字符数据以ASCII码的形式存放在内存中。
GB2312和GBK编码:
GB2312是中国大陆地区早期采用的双字节字符集编码方式,用于存储简体中文。GBK是对GB2312的扩展,不仅包含简体中文,还囊括了繁体中文。
GB2312和GBK都使用双字节表示一个汉字,且都兼容ASCII编码。在存储中文字符时,GB2312的高低位都存放大于127的数字,而GBK的高位存放大于127的数字,低位则可能包含小于127的数字。
说明一下第二段话的意思:
GB2312编码是为简体中文设计的字符集编码,它使用双字节来表示一个汉字。在GB2312编码中,高位字节(第一个字节)的范围是0xA1到0xF7(即161到247的十进制),低位字节(第二个字节)的范围是0xA1到0xFE(即161到254的十进制)。这意味着,无论是高位还是低位,其值都大于127(即0x7F的十六进制值)。
举例:假设我们有一个汉字“中”,在GB2312编码中,它可能被编码为
D6 D0
(十六进制表示)。这里,D6
是高位字节(大于127),D0
是低位字节(也大于127)。GBK编码是GB2312的扩展,它支持更多的汉字字符,包括简体和繁体中文。在GBK编码中,高位字节(第一个字节)的范围仍然是0x81到0xFE(与扩展ASCII编码的高位字节范围重叠),但低位字节的范围则扩展到0x40到0xFE(与ASCII编码的低位字节范围有部分重叠)。
举例:同样以汉字“中”为例,在GBK编码中,它可能仍然被编码为
D6 D0
(与GB2312相同),但GBK也允许其他编码方式。重要的是,GBK编码的高位字节总是大于127,但低位字节可能小于或等于127(与ASCII编码的字符值重叠)
Unicode编码:
Unicode是一种用于表示世界上所有字符的标准编码方式,它为每个字符分配了一个唯一的数字码点。
Unicode编码使用16位(即2个字节)来统一表示所有的字符,包括ASCII中的字符。Unicode编码不与任何现有的编码方案保持兼容,因此从理论上来讲在进行文本转换时需要查表进行。
而在实际应用中,通常不需要手动进行查表和转换。许多编程语言和库都提供了现成的编码转换功能。例如,在Python中,可以使用encode()
和decode()
方法对字符串进行编码和解码操作;在Java中,可以使用Charset
类来进行编码转换。
BIG5编码:
BIG5编码是繁体中文社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。
BIG5码是一套双字节字符集,使用了双八码存储方法,以两个字节来安放一个字。其“高位字节”使用了0x81-0xFE,“低位字节”使用了0x40-0x7E,及0xA1-0xFE。