一句来自《三国》中的话——分久必合合久必分,各个字符集之间也存在的分久必合的现象。随着国际标准ISO10646规定的通用字符集(UCS,全称Universal Mutiple-Octet Doded Character Set)的发布,各种字符集之间不统一和谐的问题就得到了改观。
UTF编码,全称是Unicode Transformer Format,这种编码是UCS的实际形式,它的分类是按照其基本长度所占用的位数而定,分为UTF-8/16/32三种形式。UTF可以说是其他字符集的集合,它使得其它字符集是交叉兼容的,可以说,凡是将文字符号转为UCS后再转回原来的编码,也不会丢失信息。
UCS包含了现在所有的已知语言的字符,包含从拉丁文、希腊语到中文、韩文等象形文字,再到日文的平假名、片假名等众多语系 。因此使用UTF进行程序开发,绝对是程序国际化的首选,Unicode将世界的语言统一起来,构成了最伟大的字符集。
1.UTF-8字符集
UTF-8保证了字母与数字都是一个字节,其他的文字用不定长编码,最多占用6个字节,它支持31位编码。前64K的Unicode(UCS-2)编成UTF-8只需要3个字节。
UTF-8的最大优点:
能够与128位以下编码和单字节处理软件兼容
UTF-8的多字节编码没有字节错乱问题。例如删除半个汉字时(在某些软件如CuteFTP中)时不会导致其他文字乱码
2.UTF-16字符集
UTF-8是变长编码,每个Unicode代码点按照不同范围,可能会存在着1-3个不同的字节。
UTF-16是相对固定的编码,如果处理的内容在U200000范围内,每个Unicode代码点都是16位的,超出的话,就会使用2个UTF-16(也就是4个字节)。同时UTF-16还按照位的字节高地分为UTF-16BE和UTF-16LE。
3.UTF-32字符集
UTF-32字符集始终固定,没有UTF-8/16的定位问题,每个Unicode代码点都是用32位表示(也就是4个字节)。同样,它也按照 位的字节高地分为UTF-32BE和UTF-32LE。
结语:
UTF可以说是各种文字的大杂烩,这样让各种字符融会贯通,只要通过简单的定位,就可以实现对字符串的各项操作了(UTF-32不需要定位即可),但是UTF-32是UTF编码家族占用空间最大的,在开发时候不应忽略这一点。