2015.11.11
引入
今天遇到了一个txt编码格式的问题,这也是我一直想要弄明白的问题,因此查阅了一些资料,现做一下总结。
常见编码格式
-
ASCII
全称American Standard Code for Internet Interchange,美国 信息互换代码。在计算机早期,世界上所有文档都使用ASCII编码格式来保存英文文档。
GB2312
等中国引入计算机时,当初八位字节所表示的字符范围根本不够用。所以,规定两个大于127的字符连在一起表示一个汉字。这样可以表示出6000+的简体汉字。可以将GB2312视为ASCII的扩展。目前国内的简体汉字大都用这个编码格式进行编码GBK
可是中国汉字实在太多,繁体字表示我也要用编码。没办法,将GB2312的规则改一下,凡是第一个字符是127以后的,不管第二个字符是不是127以后的都表示为一个中国汉字,这样可以多出20000+的汉字,如此中国汉字都有对应的编码表示了。同时为了也将少数民族的文字加入进来,又将GBK扩展为GB18030.UNICODE
国际标准化组织ISO开始重视这个问题了,它废止了全球各地的编码方案,而将字符编码位数由8位变成16位,理论上可以表示65535个不同的字符。保存ASCII,低8位仍然表示ASCII字符,高8位则空闲。这样保存纯半角英文文档时,将会浪费磁盘一半的空间。另外,将GBK变成UNICODE时,没有一个简单的算法可以实现转换,只能通过查表来解决。UTF-8 UTF-16
ISO提出UNICODE后,计算机网络随之兴起,迎来的就是数据传输的问题。顾名思义,UTF8 就是每次8个位传输数据,而** UTF16** 就是每次16个位,只不过为了传输时的可靠性,从UNICODE到 UTF时并不是直接的对应,而是要过一些算法和规则来转换。
虽然UTF系列可以很好囊括所有世界字符,但随之而来就是存储空间的问题,如果文档是为国人准备的,使用GB2312也是可以的。另外,编写网页时,使用统一的编码UTF-8最好。
编码格式转换
使用Notepad++转换格式简直是神器,谁用谁知道。