unicode是一种统一编码,把所有语言各种单位都赋予一个编码。unicode定义的字符编码默认是每字符4个字节32位。这种完整的32位编码方式就是UCS-4:
1、UTF-32,UCS-4,32位
2、UTF-8保持字母数字一个字节,其它的用不定长编码到最多到6个字节,支持到31位编码。前64K的unicode(UCS-2)编成UTF-8只需3个字节。
3、UTF-16以及UTF-7(UTF-7是UTF-16的二次编码)支持到1M+64K编码范围,使用2-4个字节编码。目前应该没有字符编码超过1M之外
3、UCS-2也就是普通Windows使用的Unicode子集。他只能表示64K的编码范围。对有些偏僻汉字超出64k是无法编码的。这里UCS-2不等同于UTF-16。UCS-2每个字符固定两个字节。UTF-16是2/4个字节。
4、UCS-2和UTF-16的区别在于是否支持4字节编码。Unicode定义时保留了D800-DFFF区间的编码。这段编码是没有对应字符的,只用于UTF-16内部使用。方法是:1M+64M的编码减去64K后得到1M范围(20位),高10位用D800-DBFF表示,低10位用DC00-DFFF表示,这个就是UTF-16的ensurrogate编码方式。
5、为什么用UTF-8。只是因为UTF-8的两个优点,128以下编码和单字节处理软件兼容。第二个是UTF-8的多字节编码没有部分字节混淆问题。比如删除半汉字后整行乱码的问题在UTF-8里是不会出现的(UTF-16也有相同的特点);任何一个字节的损坏都只影响对应的那个字符,其它字符都可以完整恢复。
上面的各种编码除了UTF-7/UTF8外都有高低字节优先两种表示方式。
Unicode编成也就是程序使用unicode编码处理各种数据和资源。所以程序在不同语言环境下运行显示的都是正确的字,不会出现乱码,而且可以多种语言并存。
1、UTF-32,UCS-4,32位
2、UTF-8保持字母数字一个字节,其它的用不定长编码到最多到6个字节,支持到31位编码。前64K的unicode(UCS-2)编成UTF-8只需3个字节。
3、UTF-16以及UTF-7(UTF-7是UTF-16的二次编码)支持到1M+64K编码范围,使用2-4个字节编码。目前应该没有字符编码超过1M之外
3、UCS-2也就是普通Windows使用的Unicode子集。他只能表示64K的编码范围。对有些偏僻汉字超出64k是无法编码的。这里UCS-2不等同于UTF-16。UCS-2每个字符固定两个字节。UTF-16是2/4个字节。
4、UCS-2和UTF-16的区别在于是否支持4字节编码。Unicode定义时保留了D800-DFFF区间的编码。这段编码是没有对应字符的,只用于UTF-16内部使用。方法是:1M+64M的编码减去64K后得到1M范围(20位),高10位用D800-DBFF表示,低10位用DC00-DFFF表示,这个就是UTF-16的ensurrogate编码方式。
5、为什么用UTF-8。只是因为UTF-8的两个优点,128以下编码和单字节处理软件兼容。第二个是UTF-8的多字节编码没有部分字节混淆问题。比如删除半汉字后整行乱码的问题在UTF-8里是不会出现的(UTF-16也有相同的特点);任何一个字节的损坏都只影响对应的那个字符,其它字符都可以完整恢复。
上面的各种编码除了UTF-7/UTF8外都有高低字节优先两种表示方式。
Unicode编成也就是程序使用unicode编码处理各种数据和资源。所以程序在不同语言环境下运行显示的都是正确的字,不会出现乱码,而且可以多种语言并存。
浙公网安备 33010602011771号