字符集、编码:
字符集:一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。例如:ASCII、Unicode、GB2312、GBK、GB18030、BIG5(繁体中文) ...
编码方式:符号集合与数字系统之间的对应关系,是信息处理的一项基本技术,将符号转换为计算机可以接受的二进制数值。例如:ASCII、UTF-8、UTF-16、UTF-32、GB2312、GBK、GB18030 ...
① ASCII:编码范围0x00-0x7F(即0-127),只用7位二进制就表示所有英文字符(128个字符)。ASCII是单字节编码,一个字符占1个字节。
② Unicode字符集:称为统一码、万国码、国际码。编码范围0x0000-0x10FFFF,包括100多万个字符。每个字符都有一个二进制数值(码值、码点),例如:字符"A"的码点为"0x0041",字符"中"的码点为"0x4E2D"。
Unicode字符集有3种存储方式:UTF-8,UTF-16,UTF-32。
- UTF-8 编码:广泛使用的编码方式。可变长度编码规则,一个字符1-4个字节,不同字符占用字节数不同。前128个字符(ASCII),一个字符占1个字节。一个汉字一般占用3个字节。UTF-8不需要BOM来表明字节顺序,但可以表明编码方式。
- UTF-16 编码:对应UCS-2(Universal Character Set coded in 2 octets),一个字符占2个字节,范围为 U+0000~U+FFFF。需要识别字节顺序(大端或小端)。需要BOM(Byte Order Mark, 放在文档开头告诉阅读器该文档的字节序)。
- UTF-32 编码:对应UCS-4,一个字符占4个字节,范围为 U+00000000~U+7FFFFFFF,其中 U+00000000~U+0000FFFF和UCS-2一样。需要BOM(Byte Order Mark)。
③ GB2312:中国国家标准简体中文字符集,专门用于汉字处理、汉字通信信息交换等。GB2312是对ASCll码的扩展,一个汉字占用两个字节。只有6000多个汉字。
GBK:《汉字内码扩展规范》,GB2312的扩展,有2万多个码值。一个汉字占用两个字节。一般看到936就知道是GBK。
GB18030:国家标准GB 18030-2005《信息技术中文编码字符集》,中国最新的内码字集。与GB 2312完全兼容,与GBK基本兼容,支持Unicode的全部统一汉字。是变长编码方式,可以是1个字节、2个字节和4个字节。
字节 |
十六进制 | 格式 |
实际编码位 |
码点范围 |
---|---|---|---|---|
1字节 |
0x0000-0x007F | 0xxxxxxx |
7 |
0 ~ 127 |
2字节 |
0x0080-0x07FF | 110xxxxx 10xxxxxx |
11 |
128 ~ 2047 |
3字节 |
0x0800-0xFFFF | 1110xxxx 10xxxxxx 10xxxxxx |
16 |
2048 ~ 65535 |
4字节 |
0x010000-0x10FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
21 |
65536 ~ 2097151 |
补充:字节顺序(Byte Order)是计算机存储和表示多字节数据的方式,包括大端模式(Big Endian)和小端模式