概述
字符必须编码后才能被计算机处理 计算机使用的缺省编码方式就是计算机的内码
早期的计算机使用7位的ASCII编码 为了处理汉字 程序员设计了用于简体中文的 GB2312
和用于繁体中文的 big5
ANSI
GB2312
1980年一共收录了7445个字符 包括6763个汉字和682个其它符号
汉字区的内码范围高字节从B0-F7 低字节从A1-FE 占用的码位是72*94=6768 其中有5个空位是D7FA-D7FE
GB2312 支持的汉字太少 1995年的汉字扩展规范GBK1.0收录了21886个符号 它分为汉字区和图形符号区
汉字区包括21003个字符 2000年的 GB18030是取代GBK1.0的正式国家标准 该标准收录了27484个汉字
同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字 现在的PC平台必须支持GB18030
对嵌入式产品暂不作要求 所以手机 MP3一般只支持GB2312
从ASCII GB2312 GBK到GB18030 这些编码方法是向下兼容的 即同一个字符在这些方案中总是有相同的编码
后面的标准支持更多的字符 在这些编码中 英文和中文可以统一地处理 区分中文编码的方法是高字节的最高位不为0
按照程序员的称呼 GB2312、GBK到GB18030都属于双字节字符集 (DBCS)
有的中文Windows的缺省内码还是GBK 可以通过GB18030升级包升级到GB18030 不过GB18030相对GBK增加的字符
普通人是很难用到的 通常我们还是用GBK指代中文Windows内码
文件编码的种类
ASCII码文件
此类文件为人类可识别的文件 比如 电子书 文本文档
二进制码文件
此类文件为人类不可识别的文件 比如 歌曲文件 视屏文件
通常用于文件流 编程里经常把文件存储为这种文件