每个图形好的字符图形的汉字交换吗均用两个字节的第七位二进制码表示每个字节的最高位

问题1:二进制编码是指用什么?

计算机的最基本工作原理由电路来完成电路的“开与关”正好可以表示二进制数的两个数码“0与1”,所以计算机内部能够容易实现二进制數的识别与运算

用计算机处理文字、声音、图像,就需要计算机能够识别文字、声音、图像但是由于计算机只能识别二进制数,所以偠让计算机处理文字、声音、图像就需要文字、声音、图像等转换成二进制,这个转换过程叫做信息的数字化或者叫做编码。

编码其實是把各种对象按照一定的规则用一个唯一的二进制数来表示。生活中类似的例子很多简单的举个例子,读书的时候班里每个学生囿一个学号,(当然学号使用十进制数),每个学生的学号用2位十进制数因为一个班里的学生不会超过100个,当然如果超过100个,你也鈳以规定用3位甚至4位但是每个学生学号的位数是一致的。有了学号有个好处可以唯一的表示每一个同学,学号与姓名一一对应(其实昰与具体的个体一一对应)因为姓名常常有重复,而学号不会(不允许)重复

在计算机里,需要对数字“12,34,56,78,90”、英攵字母“a,bc,d…”等等,一一用二进制来表示;同样对于汉字也需要一一用二进制数来表示。

这就是你的关于“二进制编码是指用什么”的答案

问题2:国家标题中规定以什么为基础,由什么组成一个汉字编码?

我的理解应该是“国家标准中规定以什么为基础,由什么组成┅个汉字编码?”

上面说了,要让计算机处理汉字也需要一一用二进制数来表示(对汉字进行编码)。汉字在计算机里的编码基础是汉芓的区位码:汉字的编码有:区位码、国标码和机内码的概念:

下面是来自于百度的相关介绍:

我国国家标准局于1981年5月颁布了《信息交换鼡汉字编码好的字符图形集——基本集》,代号为GB2312-80共对6763个汉字和682个图形好的字符图形进行了编码,其编码原则为:汉字用两个字节表示每个字节用七位码(高位为0),;国家标准将汉字和图形符号排列在一个94行94列的二维代码表中;每两个字节分别用两位十进制编码,前字節的编码称为区码后字节的编码称为位码,此即区位码;如“保”字在二维代码表中处于17区第3位,区位码即为“1703

汉字的国标码:国标码並不等于区位码它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国標码有一个相对位置差的代码;再将这个代码的第一个字节和第二个字节分别加上20H,就得到国标码如:“保”?字的国标码为3123H,它是经过丅面的转换得到的:1703D->1103H->+20H->3123H国标码是汉字信息交换的标准编码,但因其前后字节的最高位为0与ASCII码发生冲突,如“保”?字国标码为31H和23H,洏西文好的字符图形“1”和“#”的ASCII也为31H和23H现假如内存中有两个字节为31H和23H,;这到底是一个汉字?还是两个西文好的字符图形“1”;和“#”?于昰就出现了二义性,显然国标码是不可能在计算机内部直接采用的,于是;汉字的机内码采用变形国标码,其变换方法为:将国标码的烸个字节都加上128即将两个字节的最高位由0改1,其余7位不变如:由上面我们知道,“保”字的国标码为3123H前字节为B,后字节为B高位改1為B和B 即为B1A3H,因此汉字的机内码就是B1A3H。

希望对你有帮助,说得不对请指正!

}

有些用户在使用 AIX 时在好的字符图形编码方面遇到一些困惑请看下面的场景:

1,用户用从 AIX 利用 FTP 客户端登录上 IBM i切换到某个 Library/File,然后 get 其中的某个 Member 到本地机器用文本编辑工具咑开时发现是乱码,和自己在 IBM i 上看到的完全不一样;

2用户在实现 AIX 平台与 z/OS 平台通信的 TCP/IP 应用程序中,会遇到传送的报文内容并没有按照预想嘚出现

众所周知,AIX 平台的好的字符图形编码是基于 ASCII 的但在与非 ASCII 好的字符图形编码体系的平台通信时,就会涉及到编码转换的问题比洳 AIX 平台与 IBM i,z/OS 平台通信由于 IBM i 和 z/OS 历史悠久,在系统的好的字符图形编码以及多国语言支持方面有其鲜明的特点衍生出其独有的概念与体系。本文通过介绍好的字符图形编码的概念及其体系帮助用户解决一些类似上述的问题。

在我们的计算机世界里好的字符图形是十分基夲的元素,了解好的字符图形集好的字符图形编码的基本特性,是解决好的字符图形识别与转换实际开发中的好的字符图形处理(如讀取,截取)等问题的基础与关键

好的字符图形集(Character Set),顾名思义特定好的字符图形的集合。好的字符图形集并没定义好的字符图形嘚顺序排序的方法以及其他更多的特性。好的字符图形集通常只是定义了好的字符图形的名字以及好的字符图形形状的外在表现 ;

好的字苻图形编码(Character Encoding)在定义好的好的字符图形集基础上,设计出一种方法 ( 或者算法 ), 将好的字符图形集的好的字符图形与二进制做一个映射使得计算机能够识别和存储。

由此看出好的字符图形集和好的字符图形编码是紧密相联的。计算机会在好的字符图形集的基础上建立相應的好的字符图形图形对于某个文件,在计算机读取时会按照实现约定好的好的字符图形编码来进行读取,然后根据对应的好的字符圖形转为好的字符图形图形最后呈现在用户面前的才是熟悉的好的字符图形。

下面先介绍与本文相关的几种好的字符图形编码方案:

    在 20 卋纪 60 年代由 ANSI 组织制定的标准的单字节编码方案ASCII 编码使用 7 位二进制的组合(字节的最高位忽略)来表示 128 个英文好的字符图形 , 从而顺利的解決了美国英文的编码问题,由于 ASCII 码出现比较早后来的很多编码方案都是受它的影响。

    由于英文好的字符图形总数不多所以标准的 ASCII 就能佷好的解决问题,但对于欧洲其他国家比如希腊,就有其希腊语的特定需要因此,为了解决这个问题国际化标准组织借鉴了标准 ASCII 的設计思想,创造了利用 8 位二进制数来表示好的字符图形的扩展 ASCII并制定了一系列标准 :ISO8859。其原理就是在 0-127 的编码和标准 ASCII 相兼容基础上将 128 到 255 用莋其他语言好的字符图形的编码,这样各种语言就可以制定自己的扩展 ASCII 好的字符图形 . 这样就得到了大量不同的编码表,比如 ISO8859-1 好的字符图形集也就是 Latin-1,是西欧常用好的字符图形包括德法两国的字母。ISO8859-2 好的字符图形集也称为 Latin-2,收集了东欧好的字符图形AIX 上的编码就是基於 ASCII-ISO8859 标准集的。

    西方的语言是由好的字符图形总数不多的单词组成所以扩展 ASCII 就能满足需求了,但对于 CJK (ChineseJapanese,Korean)等亚洲国家来说256 个好的字苻图形是远远不够表示自己国家的全部好的字符图形。中国专家发挥了聪明才智借鉴了 ISO8859 的成功经验,利用双字节来表示汉字为了具有兼容性,每个字节的 0-127 均为 ASCII 保留低字节使用从

    汉字的总数可以用浩如烟海来形容,在使用 GB2312 过程中发现有很多汉字还是没有包括在其中 . 因此 1995 姩推出了汉字内码扩展规范,即 GBK( 国标扩展 )向下兼容 GB2312,向上支持 ISO10646. GBK 也是采用双字节总体编码在 8140-FEFE 之间,高字节在 0x81-0xFE 之间低字节在 0x40-0xFE 之间,不包括 7F在 GBK 1.0 中共收录了 21886 个符号,汉字有 21003 个GBK 虽然不是国家标准,只是一个规范但是却得到了非常广泛的应用,Windows 简体中文版的缺省内码还是 GBK图 1 为 GBK 的编码结构(Code Scheme)。

    GB18030 是最新的汉字编码好的字符图形集国家标准向下兼容 GBK 和 GB2312 标准。GB18030 编码是一二四字节变长编码收录了中日韩 27484 个汉芓。

Unicode 不是我们讨论的重点在这里就不介绍了。

CDRA 好的字符图形编码体系

IBM i 和 z/OS 是支持多国语言的平台用户可以使用任何一种你想使用的语言,当然前提是你的机器安装了这种语言。下面简单介绍其基本原理。

CDRA--Character Data Representation Architecture(好的字符图形数据表示架构)这个 IBM 架构定义了一整套标识,資源约定以及 API 来实现在数据处理环境中图形好的字符图形数据的一致性表示,处理交换和在数据转换时维护数据完整性。可以发现CDRA 涵盖范围主要是四方面:一个标识或标签系统,来保证图形好的字符图形数据的有效和唯一的呈现;一套可移植的 API;一套支持标签和服务嘚资源;一套使用标签和服务的约定;还有在图形好的字符图形转换的策略我们从其中核心的几方面来认识 CDRA。

为了减少正在使用的图形恏的字符图形集(Graphic Character Set)和代码页(Code Page)的不断增加带来的问题IBM 将不同国家使用的不同语言,根据语言特有的特性进行分组如 Figure 2 所示:

图 2. 好的芓符图形集的分类

Group2 包含了远东地区 ( 中国,日本韩国,泰国等 ) 的语言这些国家和地区的图形好的字符图形是使用多字节编码 (DBCS 或 MBCS) 的。

首先偠明确的是 CDRA 要处理的对象是图形好的字符图形数据(Graphic Character Data)以及某些控制好的字符图形数据其中介绍比较关键的几个 ID:

主要用于为 Character Set 和 Code Page 呈现图形好的字符图形所用,是与编码独立的并不直接参与 Tag Data。GCGID 在呈现好的字符图形处理方面比如格式化,表现和打印等具有极其重要的作鼡。

即平常所说的 Code Page也就是经过编码后,好的字符图形代码与二进制的映射表是 Code Points 的集合。

CCSID 和 Code Point就能唯一的定位到一个好的字符图形。表 2 能看出一些常见的 CCSID 以及其他 ID 的映射关系

通过 CCSID,我们可以知道它是如何进行编码的它都包含了哪些好的字符图形,以及这些好的字符图形的图形是如何呈现的这样这些 ID 就构成了浑然一体的 CDRA 命名系统。

国际化必然带来数据完整性的挑战如果本国用户不能准确与国外用户進行正常的交流,国际化是无从谈起的通过 Tagging CCSID,我们就可以维护数据的完整性(Data Integrity)所谓 Tagging,这是用来识别与呈现好的字符图形数据的主要掱段在给一个对象(FILE,JobDatabase Table 或是 Database Stream)的 Field 添加这样的标识,就叫

表 3. 同一好的字符图形在不同 CCSID 下的区别

CCSID 显得特别的重要因为支持 CDRA 的平台需要在鈈同语言的主机之间交换数据。不同语言键盘和终端显示可以安装在同一平台上,这些都是 CCSID 在提供强大的支持

在第一章提到,有些国镓与地区的语言比较复杂一个字节不能将其所有语言文件进行正确的表达,所以必须用两个或更多的字节来进行编码比如 GB2312 和 GBK 等。IBM i 对 DBCS 提供了很好的支持

如果要在 CL 命令中输入双字节好的字符图形 , 可以按照一下步骤 :

  1. 先输入单引号 (');
  2. 输入你所需的双字节好的字符图形 ;
  3. 最后以一个單引号结束 (');

如表 4 是 IBM i 支持的常见的简体中文好的字符图形集。值得注意的是在 AIX 上 GBK 的好的字符图形集,在 IBM i 对应的是 01388这个 CCSID 是在 IBM i 上最常用的简體中文编码之一。

表 4. 常见的简体中文好的字符图形集

AIX 的好的字符图形转换是由系统内部自动完成的就如同上述的一个例子。AIX 与 IBM i 进行通信時那内部到底发生了些什么?

图 5. 好的字符图形转换的过程

如图 5 所示即为好的字符图形转换的过程 , 转换表 (Conversion Table) 是已经设计好了但单单有转换表还不能保证在不同的计算环境中数据传输和共享的准确 . 而转换方法就是要准确的使用转换表,以确保输出是期望的结果 . 转换方法会分析輸入数据的 Encoding Scheme 和 String Type进行必要处理后,然后根据要求输出数据的 Encoding Scheme 和 String Type再选择合适的转换表进行转换,才能得到准确的转换结果对输入数据进荇的处理包括子好的字符图形串的切割,如果输入数据包含 code extension 的控制好的字符图形每一类子好的字符图形串应该具有相同的 Code Page 和 Character Set。

要注意的昰并不是所有图形好的字符图形都彼此支持相互转换的 . 显然,CCSID935 中的 DBCS 是无法转换为 CCSID037 的 SBCS. 这也就是为什么将 CCSID 为 935 的文件转换为 CCSID 为 037 后里面的中文恏的字符图形全部是不可阅读的 .

如何通过编程实现自定义的好的字符图形转换

上述均是好的字符图形数据处理的一些基本原理,在实际产品开发中会经常需要对好的字符图形进行转换比如碰到一些文件打开后是乱码;再比如在网络通信应用程序中,为了减轻服务器端对编碼转换的负担客户端可以先将码流转换为服务器端的编码,再进行网络传输(比如 AIX 平台和 IBM i 的通信)下面介绍两种好的字符图形转换方法,以供参考

    iconv 命令应该对很多人来说都很熟悉,它可以将好的字符图形从一种好的字符图形编码转换为另外一种好的字符图形编码而苴非常简单易用,比如将文件从 GBK 转换为 CCSID935:

    iconv API 使用也是非常方便的如下代码示例,将输入好的字符图形串从 CCSID 为 850 转换为 037:

关于好的字符图形转换嘚一些小 Tips

  • AIX 向 IBM i 传送带中文好的字符图形的文件:

对好的字符图形编码概念体系以及好的字符图形转换原理进行一定的学习和理解,对在涉忣不同平台交换数据以及对好的字符图形进行处理时比较有帮助也比较有必要。

  • 参考 了解更多关于 CDRA 的信息。
  • :developerWorks 的“AIX and UNIX 专区”提供了大量與 AIX 系统管理的所有方面相关的信息您可以利用它们来扩展自己的 UNIX 技能。
  • 专区已经为您推出了很多的技术专题为您总结了很多热门的知識点。我们在后面还会继续推出很多相关的热门专题给您为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总让您更方便的找到您需要的内容。
  • :在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具让您可以提前免费试用他们的强大功能。
  • :本杂志的内容更加关注于趋势和企业级架构应用方面的内容同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都昰由十分资深的业内人士撰写的包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以从这些内容中,您可以了解到更高层次的应鼡理念让您在选择和应用 IBM 系统时有一个更好的认识。
}

我要回帖

更多关于 图形字符 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信