编码理解
2015-11-25 12:49
246 查看
在计算机内部,所有信息都表示成二进制01,若要显示出来让人看懂,需要进行编码转换。如汉字”严”以 Unicode编码保存到计算机中是4E25,即01001110 00100101,显示给用户看时,通过Unicode编码表查看4E25对应的是”严”,显示出来。
编码的发展过程:
UTF-8就是为了专门存储Unicode而产生,规则如下:
1. ASCII码保持不变,依然是0xxxxxxx
2. 对于其他 n 字节(n>1)的字符,第一个字节的前n位都为1,第n+1位为0,后面字节的前两位为10,其他没提及的二进制位,全部为这个字符的unicode码。
多字节存储存在读取大小端问题,”大头方式”(Big endian),第二个字节在前就是”小头方式”(Little endian)。
Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。
github 地址
编码的发展过程:
(1)ASCII码
字节是计算机存储的基本单位,一字节等于八位(1byte = 8bit)。一个字节可以表示256种状态(00000000-11111111)。因此ASCII码被发明来表示128个字符(00000000-01111111),只占用后七位,第一位默认为0。其中包含所有英文字母及其他一些字符,如大写字母”A”表示为01000001(10进制为65)。(2)ASCII码加强
有些国家不用英文,自己利用字节最高位创造了一些其他字符,多表示了ASCII码除外的128个字符。如法语é表示为10000010。(3)ISO-8859-1
各个组织各搞各的没有标准很混乱,ISO 组织发明了ISO-8859-1涵盖了大多数西欧语言字符,总共能表示 256 个字符。(4)GB2312
中国自己发明了GB2312来表示中文,双字节,编码范围是 A1-F7。(5)GBK
GB2312表示的汉字太少,GBK 扩展了,编码范围是 8140-FEFE(去掉 XX7F)总共能表示23940个字符。(6)Unicode
编码过多,每次打开文件都得判断是哪种编码,进行对应的编码转换,而且系统必须支持。为了统一编码,出现了Unicode。Unicode涵盖了所有字符集。如汉字”严”,Unicode编码为4E25。(7)UCS
UCS(Unicode Character Set),Unicode的简称。目前有两种格式:UCS-2和UCS-4。UCS-2就是用两个字节编码,UCS-4就是用4个字节编码。(8)UTF-8
Unicode只是一个概念,表示一个字符和二进制对应关系表,若直接存储进计算机会出现问题。如汉字”严”,Unicode编码为4E25,二进制为01001110 00100101,直接存储二进制,和ASCII码串”N%”(也是01001110 00100101)存储内容一样,无法区分。UTF-8就是为了专门存储Unicode而产生,规则如下:
1. ASCII码保持不变,依然是0xxxxxxx
2. 对于其他 n 字节(n>1)的字符,第一个字节的前n位都为1,第n+1位为0,后面字节的前两位为10,其他没提及的二进制位,全部为这个字符的unicode码。
Unicode符号范围 | UTF-8编码方式 |
---|---|
0000 0000-0000 007F | 0xxxxxxx |
0000 0080-0000 07FF | 110xxxxx 10xxxxxx |
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx |
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
(9)UTF-16
UTF-8以单字节(8bit)为基础单位,UTF-16以双字节(16bit)为基本单位。其中BMP(基本多语言平面,U+0000至U+FFFF)双字节,包含了最常用的字符,与Unicode编码一致;其他的是辅助平面,四字节。多字节存储存在读取大小端问题,”大头方式”(Big endian),第二个字节在前就是”小头方式”(Little endian)。
Unicode规范中定义,每一个文件的最前面分别加入一个表示编码顺序的字符,如果一个文本文件的头两个字节是FE FF,就表示该文件采用大头方式;如果头两个字节是FF FE,就表示该文件采用小头方式。
(10)UTF-32
UTF-32以四字节(32bit)为基础单位,足够存储所有字符。github 地址
相关文章推荐
- 使用 Libki 来管理公共用户访问计算机
- 微型计算机的始祖:Altair 8800
- 通过手机、电脑远程开关机,Windows和linux机手机,电脑相互控制
- ASP编码必备的8条原则
- XML指南——XML编码
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- 程序员趣味读物 谈谈Unicode编码
- 文本文件编码方式区别
- C语言安全编码之数值中的sizeof操作符
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- VC中BASE64编码和解码使用详解
- 计算机中的字符串编码、乱码、BOM等问题详解
- php实现用手机关闭计算机(电脑)的方法
- Base64编码解码原理及C#编程实例
- C#编码好习惯小结
- javascript编码的几个方法详细介绍
- 用IE重起计算机或者关机的示例代码
- UTF8编码开发中页面空白问题的解决方法
- php生成固定长度纯数字编码的方法