编码知识学习笔记之一
1. ANSI
2.Unicode
3.Unicode big Endian
4.Unicode - ASCII Escaped
5.UTF-7
6.UTF-8
7.UTF-16
8.UTF-8 - 无 BOM
9.UTF-16 - 无 BOM
10.UTF-16 - Big Endian
11.UTF-16 - Big Endian - 无 BOM
12.GBK
Universal Multiple-Octet Coded Character Set
Unicode 是一种字符编码方法,它是由国际组织设计,可以容纳全世界所有语言文字的编码方案。Unicode的全称是"Universal Multiple-Octet Coded Character Set",简称为UCS。UCS可以看作是"Unicode Character Set"的缩写。
目前存在两个试图独立设计Unicode的组织:
1. 国际标准化组织(ISO)
2. 一个软件制造商的协会(unicode.org)
各自研发的项目
ISO开发了ISO 10646项目
Unicode协会开发了Unicode项
在1991年前后,双方都认识到世界不需要两个不兼容的字符集。于是它们开始合并双方的工作成果,并为创立一个单一编码表而协同工作。从Unicode2.0开始,Unicode项目采用了与ISO 10646-1相同的字库和字码。
目前两个项目仍都存在,并独立地公布各自的标准。
1.Unicode协会现在的最新版本是2005年的Unicode 4.1.0。
2.ISO的最新标准是10646-3:2003。
Unicode Character Set
UCS Transformation Format
UCS规定了怎么用多个字节表示各种文字。
怎样传输这些编码,是由UTF(UCS Transformation Format)规范规定的
小结:
UCS:表示各种文字
UTF:传输这些文字
1.UTF-7
2.UTF-8
3.UTF-16
IETF 的RFC2781和RFC3629以RFC的一贯风格,清晰、明快又不失严谨地描述了UTF-16和UTF-8的编码方法。
RFC2781描述UTF-16编码规范
RFC3629描述UTF-8编码规范
Internet Engineering Task Force
IETF负责维护的RFC
RFC是Internet上一切规范的基础
Unicode只与ASCII兼容(更准确地说,是与ISO-8859-1兼容),与GB码不兼容
UCS-2和UCS-4
1.UCS-2就是用两个字节编码
2.UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码
UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。
UCS -4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为 256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。
也就是说:
UCS -4是4个字节,从高到低,从第1个字节到第4个字节,
第1个字节是高字节,第4个字节是低字节
第1个字节分成128个group
第2个字节分成256个plane
第3个字节分成256 个rows
第4个字节分成256个cells
group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。
将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。