世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式。
一 ASCII码
ASCII码共有128个(0-127),用1个字节的低七位表示,0~31 是控制字符如换行、回车、删除等,32~126 是打印字符,可以通过键盘输入并且能够显示出来。
扩展ASCII码共有256个(0-255) 如ISO8859-1-1987(又叫ANSI)
二 Unicode
将世界上所有的符号都纳入其中,每一个符号都给予一个独一无二的编码。
Unicode 只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。 如果 Unicode 统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费。 为了解决这个问题:就有了Unicode的不同实现:UTF8 UTF16 UTF32
UTF-8:变长的编码方式
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。
2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
如: 0xxxxxxx
1110xxxx 10xxxxxx 10xxxxxx
三 中文编码
GB2312 最早一版的中文编码,每个字占据2bytes。高字节从A1-A7,低字节从A1到FE。将高字节和低字节分别加上0xA0即可得到编码。
BIG5 称为繁体中文编码,主要在台湾地区使用。
GBK 全称《汉字内码扩展规范》,同样每个字占据2bytes,在B2312上增加了繁体。高字节从81到FE,低字节从40到FE。
GB18030 解决了中文、日文、朝鲜语等的编码,兼容GBK。变长的编码方式:1字节从00到7F;2字节高字节从81到FE,低字节从40到7E和80到FE;4字节第一三字节从81到FE,第二四字节从30到39。