unicode和ucs的区别
来源:互联网 发布:智者软件官网 编辑:程序博客网 时间:2024/06/08 07:30
unicode,中文叫万国码,统一码,是统一码联盟为了世界上大多数文字系统进行整理和编码。
unicode2.0后基本和ISO 10646规范保持一致.
和unicode类似,iso组织也在做同样的事情,iso开展了 ISO/IEC 10646项目,名字叫“ Universal Multiple-Octet Coded Character Set”,简称UCS。
后来,双方意识到时间上不需要2套通用的字符集,所以双方开始进行整合,到unicode2.0时,unicode的编码和ucs的编码都基本一致。
unicode在编码上和UCS保持一致,在实现上有自己的规则,而UCS只定义了编码标准。unicode的实现形式上 有UTF-8,UTF-16,UTF-32,还有UTF-7等。UCS编码也有自己的格式:UCS-2和UCS-4等等。可参考各自wiki:unicode 和ucs
unicode的编码可以和UCS-2和UCS-4保持一致。但是又略有不同。UTF-16是UCS-2的扩展,UTF-32是UCS-4的子集。也就是说,UTF-16的实现上对code point的支持范围超过UCS-2,而UTF-32对code point的表示却又在UCS-4的范围之内。
在编码层面上,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。
UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。
UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。
group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。
将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。
Unicode最初支持16位的code point,后来发现不够用,于是用UTF-16扩展UCS-2。在BMP区域内的一片连续空间(U+D800~U+DFFF)的码位区段是永久保留不映射到字符,因此UTF-16利用保留下来的0xD800-0xDFFF区段的码位来对辅助平面的字符的码位进行编码。具体算法参考wiki:utf-16 .
所以,utf-16能表示的范围最大能到U+10FFFF,包含1个基本平面(BMP)和16个辅助平面。
参考:
http://www.52rd.com/Blog/Detail_RD.Blog_thieven_4865.html
http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html
http://www.joelonsoftware.com/articles/Unicode.html
unicode2.0后基本和ISO 10646规范保持一致.
和unicode类似,iso组织也在做同样的事情,iso开展了 ISO/IEC 10646项目,名字叫“ Universal Multiple-Octet Coded Character Set”,简称UCS。
后来,双方意识到时间上不需要2套通用的字符集,所以双方开始进行整合,到unicode2.0时,unicode的编码和ucs的编码都基本一致。
unicode在编码上和UCS保持一致,在实现上有自己的规则,而UCS只定义了编码标准。unicode的实现形式上 有UTF-8,UTF-16,UTF-32,还有UTF-7等。UCS编码也有自己的格式:UCS-2和UCS-4等等。可参考各自wiki:unicode 和ucs
unicode的编码可以和UCS-2和UCS-4保持一致。但是又略有不同。UTF-16是UCS-2的扩展,UTF-32是UCS-4的子集。也就是说,UTF-16的实现上对code point的支持范围超过UCS-2,而UTF-32对code point的表示却又在UCS-4的范围之内。
在编码层面上,UCS-2就是用两个字节编码,UCS-4就是用4个字节(实际上只用了31位,最高位必须为0)编码。
UCS-2有2^16=65536个码位,UCS-4有2^31=2147483648个码位。
UCS-4根据最高位为0的最高字节分成2^7=128个group。每个group再根据次高字节分为256个plane。每个plane根据第3个字节分为256行 (rows),每行包含256个cells。当然同一行的cells只是最后一个字节不同,其余都相同。
group 0的plane 0被称作Basic Multilingual Plane, 即BMP。或者说UCS-4中,高两个字节为0的码位被称作BMP。
将UCS-4的BMP去掉前面的两个零字节就得到了UCS-2。在UCS-2的两个字节前加上两个零字节,就得到了UCS-4的BMP。而目前的UCS-4规范中还没有任何字符被分配在BMP之外。
Unicode最初支持16位的code point,后来发现不够用,于是用UTF-16扩展UCS-2。在BMP区域内的一片连续空间(U+D800~U+DFFF)的码位区段是永久保留不映射到字符,因此UTF-16利用保留下来的0xD800-0xDFFF区段的码位来对辅助平面的字符的码位进行编码。具体算法参考wiki:utf-16 .
所以,utf-16能表示的范围最大能到U+10FFFF,包含1个基本平面(BMP)和16个辅助平面。
理论上UCS-4编码范围能达到U+7FFFFFFF,但是因为unicode和iso达成共识,只会用17个平面内的字符,所以UTF-32是UCS-4的子集。但是UTF-16是定长的编码,和UCS-4无论实现和编码都是基本一样的。
当前,Unicode深入人心,且UTF-8大行其道,UCS编码基本被等同于UTF-16,UTF-32了,所以目前UCS基本谈出人们的视野中。(Windows NT用的就是UCS-2)
参考:
http://www.52rd.com/Blog/Detail_RD.Blog_thieven_4865.html
http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html
http://www.joelonsoftware.com/articles/Unicode.html
0 0
- unicode和ucs的区别
- unicode和ucs的区别
- unicode和ucs的区别
- Unicode、UCS和UTF
- UNICODE和UCS
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来。
- ANSI、UNICODE、UTF-8、GB2312、GBK、DBCS、UCS的区别和由来
- UCS,UNICODE和UTF-8
- Unicode与UCS的历史恩怨
- 对各种字符集和字符编码的理解(Ansi,GB2312,Unicode,UCS,utf 8)
- UCS,UNICODE和UTF-8(包括转化函数)
- UNICODE和ANSI的区别
- 2.4 action栏层叠化
- linux编程-守护进程编写
- mysql:21个性能优化最佳实践之2[EXPLAIN 你的 SELECT 查询]
- Java学习——随机数
- 摄影基础知识: 曝光补偿完全指南
- unicode和ucs的区别
- Determining IP information for eth0...failed 错误解决
- Master-Detail 视图的实现, 左右滑动显示隐藏Master视图
- 基于bt开发的工具选择
- Centos6.0之rsyslog部署日志服务器
- 工作5天了。。。稍微有点熟悉这个框架了。。(这个是递归删除部门。)
- 引用web service时,出现无法识别的配置节点applicationSettings(程序报500错误)
- 最基本的百度算法秘密,了解后减少一个月的优化时间!
- JavaSE_jdk新特性_2