字符编码(二)
2015-11-30 10:57
246 查看
字符编码(二)
CJK就是中日韩的意思。Unicode为了节省码位,将中日韩三国语言中的文字统一编码。GB13000.1就是ISO/IEC 10646-1的中文版,相当于Unicode1.1。
GB18030采用单字节,双字节合4字节方案。其中单字节,双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的6582个汉字。例如:UCS的0x3400在GB18030中的编码应该是8139EF30,USC的0x3401在GB18030中的编码应该是9139EF31。
微软提供了GB18030的升级包,但这个包只是提供了一套支持CJK扩展A的6582个汉字的新字体:新宋体-18030,并不改变内码。Windows的内码仍然是GBK。
这里还有一些细节:
GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上AO。
对于任何字符编码,编码单元的顺序是由编码方案确定的,与endian无关。例如GBK的编码单元是字节,用两个字节表示一个汉字。这两个字节的顺序是固定的,不受CPU字节序的影响。UTF-16的编码单元是word(双字节),word之间的顺序是编码方案指定的,word内部的字节排序才会受到endian影响。后面还会介绍UTF-16。
GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GB18030和GBK的底字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。
CJK就是中日韩的意思。Unicode为了节省码位,将中日韩三国语言中的文字统一编码。GB13000.1就是ISO/IEC 10646-1的中文版,相当于Unicode1.1。
GB18030采用单字节,双字节合4字节方案。其中单字节,双字节和GBK是完全兼容的。4字节编码的码位就是收录了CJK扩展A的6582个汉字。例如:UCS的0x3400在GB18030中的编码应该是8139EF30,USC的0x3401在GB18030中的编码应该是9139EF31。
微软提供了GB18030的升级包,但这个包只是提供了一套支持CJK扩展A的6582个汉字的新字体:新宋体-18030,并不改变内码。Windows的内码仍然是GBK。
这里还有一些细节:
GB2312的原文还是区位码,从区位码到内码,需要在高字节和低字节上分别加上AO。
对于任何字符编码,编码单元的顺序是由编码方案确定的,与endian无关。例如GBK的编码单元是字节,用两个字节表示一个汉字。这两个字节的顺序是固定的,不受CPU字节序的影响。UTF-16的编码单元是word(双字节),word之间的顺序是编码方案指定的,word内部的字节排序才会受到endian影响。后面还会介绍UTF-16。
GB2312的两个字节的最高位都是1。但符合这个条件的码位只有128*128=16384个。所以GB18030和GBK的底字节最高位都可能不是1。不过这不影响DBCS字符流的解析:在读取DBCS字符流时,只要遇到高位为1的字节,就可以将下两个字节作为一个双字节编码,而不用管低字节的高位是什么。
相关文章推荐
- 从零开始制作H5应用(4)——V4.0,加入文字并给文字加特效
- sql语句的优化分析
- SqlServer性能检测和优化工具使用详细
- JS框架比较
- Android横竖屏切换解决方案
- (转)oracle中如何对字符串进行去除空格的方法
- SSH框架整合(简介)
- “模拟退火算法的并行化”之“接手‘硬骨头’”
- CentOS7配置redis开机启动
- linux下的所有组及文件权限
- “中文编程”是否所谓解决中国程序员编程效率的“银弹”的讨论
- Visual Basic 2012 借助DataGridView控件将Excel 2010数据导入到SQL server 2012
- 基于Spark DataFrame的数据仓库框架
- Unity3d学习03
- Servlet 3特性:异步Servlet
- ajax请求参数乱码问题
- tomcat 终止端口号
- android学习笔记,样式的开发-selector
- 从零开始制作H5应用(3)——V3.0版,loading,背景音乐及自动切换
- 数据结构和算法学习(12)-堆