简介
在编程中经常会遇到的编码问题,例如乱码问题或者文本显示成??的形式.我们知道计算机是二进制的方式存储数据,要想将人类世界的文字和符号存储到计算机,就需要将数据”翻译”成计算机语言进行存储,显示的时候又”翻译”成人类可识的数据,那么中间是翻译的过程需要的”字典”就是编码表,也就是将计算机二进制和文字、符号映射.计算机中存储信息的最小单元是字节(byte),一个字节有8个二进制位(bit),每个二进制只有两种状态,0或者1表示.那么8个二进制位就是2的8次幂,结果是256种状态,二进制范围是从00000000到11111111.
ASCII码
起初美国有关标准组织制定了一套编码叫ASCII码,用了一个字节低7位,最高位二进制位0,编码范围是00000000-0xxxxxxx,总共有128状态,表示了大小写字母,数字,标点符号以及特殊的控制字符.
0~31以及127(共33个)是控制字符,例如:LF(换行),CR(回车).
32~126(共95个)是字符,48~57为0到9共十个阿拉伯数字,65~122是大小的英文字母,其余的是字符,运算符等.
所以ACSII码编码的格式是0xxxxxxx.一个字节中除了ASCII编码外,剩余的位置还有128个状态,对于一些西欧国家,文字比较少,这些编码位置已经够用,但是对于汉字个数远多余128个,所以出现了其他编码方式.
ISO8859-1
别名是Latin1,Iso-8859-1编码是属于单字节的编码,即编码的范围是0到255.总共能表示256个字符,向下兼容了ACSII,也就是在ASCII编码的基础上扩展了127-255之间位置。编码范围是0x00-0xFF,涵盖了部分西欧的语言字符.由于和计算机的存储单元一样,应用比较广泛,例如在网络传输协议中和Mysql数据库默认的编码。
GB2312
GB2312是中国国家标准总局在1980年发布,用于汉字处理,汉字通信等系统之间信息,主要编码的字符是简化汉字,以及常用字母和符号,中国大陆地区和新加坡等地广泛使用.总共收录字符有7445个,其中简化的汉字是6763,以及包含拉丁字母,希腊字母,日文平假名及片假名字母,俄语西里尔字母在内的全角字符有682个.
GB2312对收录的字符进行了分区处理,共有94个区,每个区有94个字符,这种表示字符的方式叫区位码.例如下面01区和02区.
每个区具体的分布的字符如下:
区号 |
编码总数 |
表示的符号 |
01 |
94 |
一般符号 |
02 |
72 |
顺序号码 |
03 |
94 |
拉丁字母 |
04 |
83 |
日文假名 |
05 |
86 |
Katakana |
06 |
48 |
希腊字母 |
07 |
66 |
俄文字母 |
08 |
63 |
汉语拼音符号 |
09 |
76 |
图形符号 |
10-15 |
0 |
没有编码 |
16-55 |
3755 |
一级汉字,以拼音为序 |
56-87 |
3008 |