Informix中实现中文表名和字段名

环境:操作系统为suse11,数据库版本为Informix V11.50FC9
需要额外的文件包:ISL3.50MC3.tar(即IBM Informix International Language Supplement V3.30 MC2)中简体中文zh_CN.UTF8字符集支持。

详细步骤:

1,正常安装Informix V11.50FC9

安装操作过程省略;

2,使用glfiles检查当前数据库支持的字符集

informix@suse11> glfiles

将在当前目录下生成lc11.txt文件,可以检查发现当前支持的简体中文字符集包括

Filename: lc11/zh_cn/1570.lco
Language: Chinese
Territory: PRC
Code Set: GB18030-2000
Locale Name: zh_cn.GB18030-2000
Filename: lc11/zh_cn/e00d.lco
Language: Chinese
Territory: China
Code Set: gb
Locale Name: zh_cn.gb

其中并没有需要的zh_CN.UTF8,因此需要为数据库加载zh_CN.UTF8字符集。

3,为数据库加载zh_CN.UTF8字符集

将ISL3.50MC3.tar解压缩后,把gls/lc11/zh_cn目录下的e00d.lco 及e01c.lc.gz文件复制到$INFORMIXDIR/gls/lc11/zh_cn目录下即可。然后再次使用glfiles命令重新生新lc11.txt,检查该文件,应该含有

Filename: lc11/zh_cn/e01c.lco
Language: Simplified Chinese
Territory: PRC
Code Set: utf8
Locale Name: zh_cn.utf8

4,确认操作系统支持zh_CN.UTF-8

使用locale -a 命令,然后检查是否支持zh_CN.UTF8(注en_US.UTF-8亦可)
zh_CN.utf8

5,设置数据库环境包启以下环境,然后初始化数据库

LANG=zh_CN.UTF-8
DB_LOCALE=zh_CN.UTF8
CLIENT_LOCALE=zh_CN.UTF8

再创建数据库testdb,再使用sql确认新建的testdb库是否是zh_CN.UTF-8字符集的

select * from sysmaster:sysdbslocale where dbs_dbsname='testdb';

对应的dbs_collate应为zh_CN.57372 (57372对应的16进制即为e01c,和上面的文件名对应),表示字段集是zh_CN.UTF-8
测试简体中文表名和字段名及数据

informix@suse11:/opt/ids11> dbaccess testdb -

    Database selected.

 > create table 测试 (编号 char(20), 姓名 char(20));

    Table created.

 > insert into 测试 values('编号001','测试名字');

    1 row(s) inserted.

 > select * from 测试;

    编号    姓名

    编号001 测试名字

    1 row(s) retrieved.

完成测试,显示正常!
测试使用字符集zh_CN.GB18030-2000时却无法成功使用中文字段,与该文冲突http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1004sungr/index.html

注:使用SecureCRT显示zh_CN.UTF8字符时,应该当在 会话选项->终端->外观 精确字体中选择UTF-8,否则将显示乱码。
附:zh_cn.zip包含$INFORMIXDIR/gls/lc11/zh_cn下的简单中文字符集文件。
zh_cn.zip

标签: none

添加新评论

Free Web Hosting