字符编码
字符编码相关常识
字符编码简介
1. ASCII
ASSII
(American Standard Code for Information Interchange),是一种单字节编码。单字节可以表示 256 个不同的字符,可以表示所有的英文字符和许多控制符号。ASCII
只用到其中的一半(\x80以下),这是MBCS
得以实现的基础。
2. MBCS
MBCS
(Multi-Byte Character Set)是一种多字节编码。目前大多使用双字节编码,所以也叫DBCS
(Double-Byte Character Byte)。MBCS
并不是某一种特定的编码,Windows 中根据设定的区域不同,指代不同的编码。而Linux里无法使用MBCS作为编码。Windows中,微软使用ANSI
来代表MBCS
,在简体中文Windows默认的区域设定里,指代GBK。
如GBxxx、BIGxxx等,都是多字节字符编码,他们的规则是:如果第一个字节是\x80以下,则仍然表示ASCII字符;如果是\x80以上,则跟下一个字节一起(共两个字节)表示一个字符,然后跳过下一个字节,继续往下判断。
IBM发明了一个叫Code Page的概念,将这些编码都收入囊中并分配页码,GBK是第936页,也就是CP936。所以,也可以使用CP936表示GBK。
3. Unicode
UCS
(Unicode Character Set)还仅仅是字符对应码位的一张表而已,比如汉
这个字的码位是6C49
。字符具体如何传输和储存则是由UTF
(UCS Transformation Format)来负责。
Unicode标准UCS-2
使用两个字节表示一个字符,UCS-4
标准,使用4个字节表示一个字符。
最初,使用UCS
的码位来保存,这就是UTF-16
,比如,汉
直接使用\x6C\x49保存(UTF-16-BE
),或是倒过来使用\x49\x6C保存(UTF-16-LE
)。但英文字母只需要一个字节就能保存,变成了两个字节,空间消耗大了一倍,于是UTF-8
横空出世。BOM
(Byte Order Mark),文件编码方式。
4. UTF-8
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 |
---|---|---|---|---|---|
0xxx xxxx | |||||
110x xxxx | 10xx xxxx | ||||
1110 xxxx | 10xx xxxx | 10xx xxxx | |||
1111 0xxx | 10xx xxxx | 10xx xxxx | 10xx xxxx | ||
1111 10xx | 10xx xxxx | 10xx xxxx | 10xx xxxx | 10xx xxxx | |
1111 110x | 10xx xxxx | 10xx xxxx | 10xx xxxx | 10xx xxxx | 10xx xxxx |
… | … | … | … | … | … |
查询转换工具
查看字符编码(UTF-8)
在线中文汉字/ASCII码/Unicode编码互相转换工具
在线Unicode编码转换工具(为您提供ASCII与Unicode互转,Unicode与中文互转,中文转换为&#XXXX形式)
GBK 编码
Unicode汉字编码表