字符编码 摘要
2015-08-11 11:36
274 查看
基本知识
字符编码 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指的是低地址存放最高有效位MSB
Little 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是将数字转换成程序数据的编码方案。
字符编码 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指的是低地址存放最高有效位MSB
Little 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是将数字转换成程序数据的编码方案。
相关文章推荐
- 使用Haproxy,Keepalived,Tproxy实现高可用透明反向代理
- CoreData的简单使用
- 那些红过的90后创业者现在还好吗?
- Linux电源管理(11)_Runtime PM之功能描述
- Cocos2d-x3.2中添加Android手机震动
- 【COCI 2012】Tax
- nyoj845 无主之地1
- C#中静态函数的作用
- UVa 10594 Data Flow (最小费用最大流+有问题)
- 数据结构实验之链表三:链表的逆置
- HDU - 1815 Building roads (2-SAT)
- hdu 5360 Hiking (优先队列+贪心)
- IE下angularJS页面跳转的bug
- WPF -Enum的三种绑定方法
- 关于iOS7 上下黑条解决办法
- HDOJ2222Keywords Search【AC自动机模板题】
- HDU-1713 相遇周期
- hdu 1875 畅通工程再续【prim&kruskal】
- UVA - 10596 - Morning Walk(并查集判断连通图)
- JAR包引用其它JAR包的classpath问题