赞
踩
基本知识
字符编码 Unicode UTF Big-endian Little-endian
字符编码 Character encoding
目的是,将字符编码和字符集中的对象一一对应,以便文本在计算机和网络间存储。
早期的字符编码是ASCII码 American Standard Code for Information Interchange。
标准ASCII码有7个二进制位,即一个字节。共有128个字符,96个可打印,32个控制字符。
扩展ASCII码在标准ASCII码上扩充一个字节,IBM推出,不是国际标准。
ISO8859-1 单字节 英文编码。
GB2312/GBK 双字节 汉字国标码。
Unicode
1994年,为了解决ISO8859-1字符编码的兼容问题,产生了Unicode码。
统一编码,用来表示所有语言的字符,定长双字节。
为了兼容其他编码方式,首256字符保留给ISO 8859-1所定义的字符。Java内部是使用Unicode进行编码的。
字符对应一个代码点 code point。表示Unicode字符时,通常用U+后跟16进制。范围是0-0x10ffff,共1114112个字符。
UCS-2,Universal Character Set coded in 2 octets。用两个字节表示代码点。
UCS-4,用四个字节表示代码点。
UCS规定了代码点和字符的关系。
UTF规定了存储方式。Unicode Transformation Format
UTF-16由RFC2781规定,它使用两个字节来表示一个代码点。
对应于UCS-2,用BOM,Byte Order Mark来表示文件是Big Endian or Little Endian。
UCS-2中并没有定义U+FFFE,通过FE和FF的字节顺序可知是Big 还是 Little
Big-endian Little-endian
Big Endian指的是低地址存放最高有效位MSBLittle Endian指的是低地址存放最低有效位LSB
一个例子:
如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为
Big-endian Little-endian
0x0000 0x12 0xcd
0x0001 0x34 0xab
0x0002 0xab 0x34
0x0003 0xcd 0x12
Little Endian不用考虑地址转换的问题。
UTF-8、UTF-16、UTF-32是将数字转换成程序数据的编码方案。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。