Unicode与UTF-8/UTF-16/UTF-32的区别
来源:互联网 发布:北京公交卡充值软件 编辑:程序博客网 时间:2024/04/26 03:59
Unicode的最初目标,是用1个16位的编码来为超过65000字符提供映射。但这还不够,它不能覆盖全部历史上的文字,也不能解决传输的问题 (implantation head-ache's),尤其在那些基于网络的应用中。已有的软件必须做大量的工作来程序16位的数据。
因此,Unicode用一些基本的保留字符制定了三套编码方式。它们分别是UTF-8,UTF-16和UTF-32。正如名字所示,在UTF-8中,字符 是以8位序列来编码的,用一个或几个字节来表示一个字符。这种方式的最大好处,是UTF-8保留了ASCII字符的编码做为它的一部分,例如,在 UTF-8和ASCII中,“A”的编码都是0x41.
UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的,通常说的Unicode就是指UTF-16。在讨论Unicode时,搞清楚哪种编码方式非常重要。Unicdoe相关的技术介绍参见http://www.unicode.org/unicode/standard/principles.html.
UTF-8/UTF-16/UTF-32
UTF,即Unicode Transformer Format,是Unicode代码点(code point)的实际表示方式,按其基本长度所用位数分为UTF-8/16/32。它也可以认为是一种特殊的外部数据编码,但能够与Unicode代码点做一一对应。
UTF-8是变长编码,每个Unicode代码点按照不同范围,可以有1-3字节的不同长度。
//UTF-8是压缩的Unicode编码方式.
UTF-16长度相对固定,只要不处理大于\U200000范围的字符,每个Unicode代码点使用16位即2字节表示,超出部分使用两个UTF-16即4字节表示。按照高低位字节顺序,又分为UTF-16BE/UTF-16LE。
UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。按照高低位字节顺序,又分为UTF-32BE/UTF-32LE。
UTF编码有个优点,即尽管编码字节数不等,但是不像gb2312/gbk编码一样,需要从文本开始寻找,才能正确对汉字进行定位。在UTF编码下,根据 相对固定的算法,从当前位置就能够知道当前字节是否是一个代码点的开始还是结束,从而相对简单的进行字符定位。不过定位问题最简单的还是UTF- 32,它根本不需要进行字符定位,但是相对的大小也增加不少。
UTF-16和UTF-32分别是Unicode的16位和32位编码方式。考虑到最初的目的,通常说的Unicode就是指UTF-16。在讨论Unicode时,搞清楚哪种编码方式非常重要。Unicdoe相关的技术介绍参见http://www.unicode.org/unicode/standard/principles.html.
UTF-8/UTF-16/UTF-32
UTF,即Unicode Transformer Format,是Unicode代码点(code point)的实际表示方式,按其基本长度所用位数分为UTF-8/16/32。它也可以认为是一种特殊的外部数据编码,但能够与Unicode代码点做一一对应。
UTF-8是变长编码,每个Unicode代码点按照不同范围,可以有1-3字节的不同长度。
//UTF-8是压缩的Unicode编码方式.
UTF-16长度相对固定,只要不处理大于\U200000范围的字符,每个Unicode代码点使用16位即2字节表示,超出部分使用两个UTF-16即4字节表示。按照高低位字节顺序,又分为UTF-16BE/UTF-16LE。
UTF-32长度始终固定,每个Unicode代码点使用32位即4字节表示。按照高低位字节顺序,又分为UTF-32BE/UTF-32LE。
UTF编码有个优点,即尽管编码字节数不等,但是不像gb2312/gbk编码一样,需要从文本开始寻找,才能正确对汉字进行定位。在UTF编码下,根据 相对固定的算法,从当前位置就能够知道当前字节是否是一个代码点的开始还是结束,从而相对简单的进行字符定位。不过定位问题最简单的还是UTF- 32,它根本不需要进行字符定位,但是相对的大小也增加不少。
- Unicode与UTF-8/UTF-16/UTF-32的区别
- Unicode与UTF-8/UTF-16/UTF-32的区别
- Unicode UTF-8 UTF-16 UTF-32区别与联系
- UTF-8、UTF-16、Unicode的区别
- GB2312/GBK, ISO 8859-1, unicode,UTF(UTF-8/UTF-16/UTF-32)之间的区别与联系
- Unicode utf-8 utf-16 utf-32 区别
- Unicode,UTF-8,UTF-16,UTF-32,gb2312,gbk区别
- Unicode,UTF-8,UTF-16,UTF-32
- unicode,utf-8,utf-16,utf-32
- Unicode、UCS、UTF-8、UTF-16、UTF-32 的关系
- 浅析unicode和UTF-8、UTF-16、UTF-32的区别
- UTF-8与UTF-16的区别
- 关于Unicode, UTF-8与UTF-16
- Unicode与UTF-8/UTF-16
- UTF-8、UTF-16、UTF-32的区别
- gbk, gb2312,big5,unicode,utf-8,utf-16的区别
- gbk, gb2312,big5,unicode,utf-8,utf-16的区别
- gbk, gb2312,big5,unicode,utf-8,utf-16的区别
- TestNG 七 annotation
- shell 十三問
- JInto做国际化对中文支持不好,国际化完成后,打开网页可能会出现乱码的问题
- Poco中的task与notification的关系
- win7 安装apache+php+mysql
- Unicode与UTF-8/UTF-16/UTF-32的区别
- 5 个步骤保护您的数据传输安全
- JavaScript的单线程性质以及定时器的工作原理
- Android控件之ListView
- 一些测试总结
- Poco中的RunnableAdaptor实现浅析
- 用Detours实现APIHOOK
- How to Get Virtual Desktops on Windows with Dexpot
- TestNG 八 并发测试