Introduction of Encoding: UTF-16/UCS-2/Unicode/GBK

Abstract:

Unicode, ASCII 是一种编码表,即 文字X <==> 代码点U+ABCD, 他们不管如何存储。

UCS-2,UCS-4 则是一种代码点描述的规范,UCS-2用2个字节,UCS-4用4个字节。

UTF-8,UTF-16(GBK,GB2312)是用来表示如何存储这些代码点,注:UTF-*是Unicode的实现,而GBK是GB2312的超集,跟Unicode没关。

 

Unicode是为整合全世界的所有语言文字而诞生的。任何文字在Unicode中都对应一个值, 这个值称为代码点(code point)。代码点的值通常写成 U+ABCD 的格式。 而文字和代码点之间的对应关系就是UCS-2(Universal Character Set coded in 2 octets)。 顾名思义,UCS-2是用两个字节来表示代码点,其取值范围为 U+0000~U+FFFF。

为了能表示更多的文字,人们又提出了UCS-4,即用四个字节表示代码点。 它的范围为 U+00000000~U+7FFFFFFF,其中 U+00000000~U+0000FFFF和UCS-2是一样的。

要注意,UCS-2和UCS-4只规定了代码点和文字之间的对应关系,并没有规定代码点在计算机中如何存储。 规定存储方式的称为UTF(Unicode Transformation Format),其中应用较多的就是UTF-16和UTF-8了。

utf-8以1、2、3、4字节存储一个unicode编码,对于英文字符(ASCII),只需要使用一个字节,因此它用来存储英文字符较多的数据,是最有效率的。

utf-16以2、4字节存储一个unicode编码.

In addition,

UTF-16 (16-bit UCS/Unicode Transformation Format) is a variable-length character encoding for Unicode

UCS-2 is fixed length and always encodes characters into a single 16-bit code unit.

Because of the technical similarities and upwards compatibility from UCS-2 to UTF-16, the two are often erroneously conflated and used as if interchangeable, so that strings encoded in UTF-16 are sometimes misidentified as being encoded in UCS-2.

refs:

1) http://tech.idv2.com/2008/02/21/unicode-intro/

2) http://en.wikipedia.org/wiki/UTF-16/UCS-2

posted @ 2010-10-11 14:42  环宇者  阅读(234)  评论(0编辑  收藏  举报