信息传递、编码和计算机表示(三)
来源:互联网 发布:网络adb手机刷机 编辑:程序博客网 时间:2024/06/10 15:10
概要:
信息传递、编码和计算机表示(二) 中讲述了ASCII和Extended ASCII。 本篇将分析中文如何编码。
如果中国人要使用计算机处理和显示中文,自然就涉及到中文在计算机中如何编码的问题。由于ASCII占用一个字节的低7bit(0x00-0x7F),Extended ASCII完全使用了一个字节的8bit。 并且一个字节只能表示2^8 = 256种情况,而常用汉字有7000多个,很明显一个字节是表达不了这么多情况的,那么2个字节呢,2个字节总共16bit,可以表示2^16 = 65536种情况,这就可以满足编码需求了。于是,便有了2字节码。
一、GB2312码
<!--以下引用自 http://tester2test.blog.51cto.com/461899/137617 -->
01 94 一般符号
02 72 顺序号码
03 94 拉丁字母
04 83 日文假名
05 86 Katakana
06 48 希腊字母
07 66 俄文字母
08 63 汉语拼音符号
09 76 图形符号
10-15 备用区
16-55 3755 一级汉字,以拼音为序
56-87 3008 二级汉字,以笔划为序
88-94 备用区
<!-- 引用结束 -->
1993年,Unicode 1.1版本推出,收录了中国大陆、台湾、日本及韩国通用字符集的汉字,总共有20,902个。
中国大陆订定了等同于Unicode 1.1版本的“GB 13000.1-93”“信息技术 通用多八位编码字符集(UCS)第一部分:体系结构与基本多文种平面”。
由于GB 2312-80只收录了6763个汉字,有不少汉字,如部分在GB 2312-80推出以后才简化的汉字(如“啰”),部分人名用字(如中国前总理朱镕基的“镕”字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。中文电脑开发商,于是利用了GB 2312-80未有使用的编码空间,收录了所有出现在Unicode 1.1及GB 13000.1-93之中的汉字,制定了GBK编码。
根据西方资料,GBK最初是由微软对GB2312的扩展,也就是CP936字码表 (Code Page 936)的扩展(原来的CP936和GB 2312-80一模一样),最初出现于Windows 95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然GBK收录了所有Unicode 1.1及GB 13000.1-93之中的汉字,但是编码方式与Unicode 1.1及GB 13000.1-93不同。仅仅是GB 2312到GB 13000.1-93之间的过渡方案。
<!-- 引用结束-->
<!-- 引用自:http://zh.wikipedia.org/wiki/GB_18030 -->
GB 18030,全称:国家标准GB 18030-2005《信息技术 中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB 18030-2000《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版。与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。
GB 18030主要有以下特点:
- 与 UTF-8 相同,采用多字节编码,每个字可以由1个、2个或4个字节组成。
- 编码空间庞大,最多可定义161万个字符。
- 支持中国国内少数民族的文字,不需要动用造字区。
- 汉字收录范围包含繁体汉字以及日韩汉字
本规格的初版使中华人民共和国信息产业部电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17日发布。现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施。此规格为在中国境内所有软件产品支持的强制规格。
<!-- 引用结束-->
三、编码之间的关系
ASCII、GB2312、GBK的关系如下图:
备注:兼容就是说对于“中文123”这样可以通过GB2312进行编码的内容,通过GBK或者GB18030编码的结果和GB2312编码是一样的。
四、打印GB2312的编码
按照上面说的GB2312编码规则,可以打印这些汉字,C代码如下:
例如调用print_gb2312_pk(16, 55, 1, 94);输出 “16-55 3755 一级汉字,以拼音为序”的汉字,输出如下:
- 信息传递、编码和计算机表示(三)
- 信息传递、编码和计算机表示(一)
- 信息传递、编码和计算机表示(二)
- 信息传递、编码和计算机表示(四)
- 计算机表示和操纵信息的方式
- 字符信息的表示和编码
- 计算机中的信息表示
- 深入理解计算机系统之旅(二)信息在计算机中的表示和处理
- 计算机中字符的二进制编码表示(ASCII)
- 各种信息在计算机中的表示(数字、字母、汉字)
- 计算机基础四之数制和信息的编码上
- 计算机基础四之数制和信息的编码下
- 第三章信息编码与数据表示(一)
- 第三章信息编码与数据表示(二)
- 计算机中汉字的二进制编码表示
- 计算机编码类型以及变量表示范围
- 计算机中数据信息的表示
- 计算机中信息的表示与处理
- windows系统利用Xmanger远程图形操作界面连接linux
- 什么是SOAP
- 欢迎大家访问本博客
- 解释5种访问修饰符
- 如何提高Web应用程序性能,写出五种方法
- 信息传递、编码和计算机表示(三)
- 网址导航类网站应该给用户灵感
- 在select * from A.B.C.D中A、B、C、D分别代表什么对象?
- C#语言 第五部分 线程(二) 线程同步(1)
- XML配置文件和对象的互相转化(使用Digester)
- ubuntu下,C/C++通过JNI调用 JAVA类
- Flex或Flash的跨域访问的解决方案
- c#中的集合
- 无聊时做的一个简易的WEB版连连看