Unicode编码
ASCII是目前来说使用比较广泛的字符,由一个字节组成的字符集合,可以表示所有拉丁字符,分为7位和8位两种编码,7位的高位用于奇偶校验,可以表示128个字符。但是由于ASCII码只能表示128个字符,不能满足世界其他文字的表示,于是unicode的产生了。
标准的unicode是两个字节的,可以表示65536个字符。但是后来由于65536个字符也远远不够用,所以就增添了一部分字符。目前主要有以下几种unicode的编码:utf-8,ucs-2,utf15,utf-32。
UTF-8
UTF-8是可变的字符集合,其中一些字符用1个字节,一些字符用2个字节,一些字符用3个字节,一些字符用4个字节。值在0x0080以下的字符以用1个字节表示,主要适合美国使用的字符。0x0080和0x07FF之间的字符转换为2个字节,这对欧洲和中东地区的语言非常适用。0x0800以上的字符都转换为3个字节,适合中国及东亚的语言,实际上,中国汉字9万多个,这种编码只支持了部分的常用汉字。4字节则表示一些附加字符,其中有部分的汉字。
Unix平台中普遍支持UTF-8字符集,HTML和大多数浏览器也支持UTF-8,而window和java则支持UCS-2。
优点:在对欧洲字符的支持上,存储空间较小,也比较高效。
UCS-2
UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。
UCS-2的优点:
对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。
处理字符的速度比UTF-8更快,因为是固定长度编码的。
对于windows和java的支持更好。
UTF-16
UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。
UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。
UTF-16相对UTF-8的优点,和UCS-2是一致的。
UTF-32
UTF-32将每个字符都编码为4个字节。任何语言都采用4个字节,所以不用考虑处理字节数不定的字符,这种编码方式就非常有用。但是这种编码太过占内存,也不怎么高效。