huacaib
作者huacaib·2011-02-21 10:37
服务经理/售后经理·盛德

Informix数据库对UTF8字符集的支持

字数 2389阅读 1483评论 0赞 0

随着企业信息化的不断快速发展,信息化的深度不断加大,越来越多的企业数据和信息需要使用数据库存储和
管理,但是往往这些信息是建立在不同的平台之上,存储在不同的数据库产品之中,如此一来在数据交换过程中跨数
据库的整体统一标准就成为了企业当务之急。

字符集问题即是这其中的一个。以金融行业为例,很多银行等金融机构,经过多年的信息化发展,建立了
多种基于不同数据库厂商产品的各种平台,如基本IBM Informix数据库、IBM DB2数据库、Oracle数据等业务系统,
这些业务系统相互之间以及银行和银行直接难免需要进行数据交换、数据的集中、数据的分析,如何尽快尽早的
统一的所有业务系统的字符集已经成为金融系统当前面临的难题之一。在本文中我们将介绍一下Informix的中文字符集
,以及介绍一下Informix数据库对UTF8字符集的支持情况。

1.字符集的基本知识

如果从头说起,字符集最早的编码方案来自于ASCII,这也是最常见的编码方式。该方案起源于20世纪60年代初期,
最初是美国国会图书馆制定用来作为美国图书馆界书目交换的共同标准,最后完善成为美国的国家标准ASCII(American
Standard Code for Information Interchange),之后进一步演变成世界性的计算机字符编码标准ISO646(其全名为
7-bit coded character set for information interchange),于是成为计算机编码方案的基础。

Informix 数据库最早支持的编码方案也就是en_US.8859-1.
由于英文字符一般是以一个字节来存储的,7位的编码方案最多只能代表128个字符;经过扩展的8为编码方案也能
代表256个字符,这远远不能满足计算机发展的需要,对于亚洲国家复杂的字符存储需要更多的码位,于是各种编码方案
随之而生。

为了容纳全世界各种语言的所有字符和符号,解决不同编码之间的兼容和转换问题,1991年1月,十多家公司共同出资,
组建Unicode协会,随后Unicode编码产生了。

Unicode 协会的口号是:给每个字符提供一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。
最初Unicode编码使用2-Byte(16bit)来进行编码,但是最多只能容纳65536个字符,仍然不够使用,后来进行了
扩充,也就是Unicode 3.1标准,增加了额外的补充字符定义,现在Unicode 5.0标准已经发布,具体参考Unicode
官方站点(http://www.unicode.org)。Unicode 主要有3个实施标准:UTF-8,USC-2和UTF-16。Informix通过Informix
International Language Supplement 支持UTF-8。

根据各种不同标准的含义,如果数据库需要存放不同语言的不同字符和符号,需要进行跨数据库的数据交换
与分析,一般建议使用Unicode编码方案。当然,Unicode方案可以表示更多的字符,但是由于多位的存储,需要额外
的存储空间和网络传输,所以选择最适合的数据库字符集仍然需要慎重考虑。

2.举例说明Informix如何使用UTF-8字符集

标准的Informix数据库产品中往往没有UTF-8字符集,客户或使用者可以通过执行glfiles命令在$INFORMIXDIR/
下生成lc11.txt文件,通过检查lc11.txt文件中的内容,将可以确认,当前安装的版本中是否有支持UTF8的字符集。

本案例中,我们选择使用Informix Dynamic Server 11.50.FC3 for AIX 5.3来测试Informix 对UTF-8字符集的支持。
第一步: 运行glfiles,生成lc11.txt,经过检查,安装的版本中不带有zh_cn.utf8字符集;
第二步:下载、安装Informix International Language Supplement,本例中我们使用ILS3.40.MC3的版本,
安装完成后,再次运行glfiles,确认新的lc11.txt中包含了zh_cn.utf8字符集;
第三步:确认操作系统对中文字符集的支持,执行locale -a|grep -i zh_cn,经确认操作系统支持中文ZH_CN.UTF-8
第四步:在Informix环境变量中添加export LANG=ZH_CN.UTF-8,export DB_LOCALE=zh_cn.utf8,export
CLIENT_LOCALE=zh_cn.utf8;
第五步:重新启动Informix数据库实例,注意使新的环境变量生效,然后新建基于zh_cn.utf8的数据库,完成后
进入sysmaster,执行select * from sysdbslocale 进行确认,如果相应的dbs_collate的内容是“zh_CN.57372”
那么一个支持zh_cn.utf8字符集的数据库就已经新建成功了。

接下来,就可以使用支持UTF8的telnet 终端,比如securityCRT,PUTTY-CKJ等,在相应的环境设置中点选“支持uft8”选项,
然后就可以通过dbaccess或其他Informix工具,方便快捷地进行UTF8字符集的数据的查询,插入等操作了。

Informix作为市场上主流的OLTP数据库之一,一直以来都对Unicode字符集有很好的支持,面对越来越复杂的企业IT
环境,我们有理由相信有着对Unicode良好支持的informix 数据库会在企业数据管理,数据分析以及数据整合中发挥越来
越重要的作用。

参考资料:
Unicode 官方站点: http://www.unicode.org

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广