EBCDIC 与 GBK 的字符编码及其转换

本文介绍了字符编码的基本概念,包括ASCII、EBCDIC、GBK及其与IBM i、z/OS平台的关系。重点讨论了字符集、编码方式,以及在AIX与IBM i、z/OS之间的转换问题。通过了解字符编码,有助于解决跨平台通信时的字符乱码问题。同时,文章提到了字符转换的方法,如iconv命令和API,以应对开发中的字符处理需求。
摘要由CSDN通过智能技术生成

概览

有些用户在使用 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),在定义好的字符集基础上,设计出一种方法 ( 或者算法 ), 将字符集的字符与二进制做一个映射,使得计算机能够识别和存储。

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

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

  1. ASCII(American Standard Code for Information Interchange)

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

  2. 扩展 ASCII-ISO8859

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

  3. GB2321

    西方的语言是由字符总数不多的单词组成,所以扩展 ASCII 就能满足需求了,但对于 CJK (Chinese,Japanese,Korean)等亚洲国家来说,256 个字符是远远不够表示自己国家的全部字符。中国专家发挥了聪明才智,借鉴了 ISO8859 的成功经验,利用双字节来表示汉字,为了具有兼容性,每个字节的 0-127 均为 ASCII 保留,低字节使用从 0xA1-0xFE,高字节使用从 0xB0-0xF7 的区间,这样就能表示 94*72 = 6768 个中文汉字了。这个编码标准就是 GB2312-80 (国家标准)。

  4. GBK

    汉字的总数可以用浩如烟海来形容,在使用 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)。



    图 1.GBK 的编码结构(Code Scheme)
    图 1.GBK 的编码结构(Code Scheme)

    其中 GBK1 收录除 GB2312 符号外的增补符号 ,GBK5 为非中文字符集,GBK2 收录 GB2312 汉字,GBK3 收录 CJK 汉字 ,GBK4 收录 CJK 汉字和增补汉字,UDC 区为用户自定义字符区 .

  5. GB18030

    GB18030 是最新的汉字编码字符集国家标准࿰

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值