温馨提示×

Linux Informix如何设置字符集

小樊
51
2026-08-27 03:03:00
栏目: 智能运维

在 Linux 上的 IBM Informix 中,字符集(数据库语言环境)主要通过 环境变量 和 数据库创建参数 来设置。下面是常见、规范的配置方式。


一、Informix 字符集相关核心概念

Informix 中“字符集”主要由以下两个环境变量决定:

环境变量 作用
DB_LOCALE 数据库使用的语言/字符集
CLIENT_LOCALE 客户端使用的语言/字符集

常见字符集示例:

字符集 DB_LOCALE / CLIENT_LOCALE
UTF-8 en_US.utf8
GBK zh_CN.gb
GB18030 zh_CN.gb18030
ISO-8859-1 en_US.8859-1

二、设置字符集(推荐方式)

1️⃣ 设置环境变量(最常用)

在 Linux 用户环境 中(如 informix 用户):

export DB_LOCALE=en_US.utf8
export CLIENT_LOCALE=en_US.utf8

✅ 建议写入配置文件,避免每次手动设置:

vi ~/.bash_profile

或

vi ~/.bashrc

添加:

export DB_LOCALE=en_US.utf8
export CLIENT_LOCALE=en_US.utf8

然后生效:

source ~/.bash_profile

2️⃣ 创建数据库时指定字符集(非常重要)

即使环境变量已设置,创建数据库时也必须显式指定 locale,否则可能使用默认字符集。

CREATE DATABASE testdb
  WITH LOG
  IN datadbs01
  LOCALE en_US.utf8;

✅ 推荐写法(最安全):

CREATE DATABASE testdb LOCALE "en_US.utf8";

三、查看当前字符集

1️⃣ 查看数据库字符集

SELECT dbs_name, dbs_collate
FROM sysmaster:sysdatabases;

或:

SELECT DBINFO('db_locale') FROM systables WHERE tabid = 1;

2️⃣ 查看客户端字符集

echo $DB_LOCALE
echo $CLIENT_LOCALE

四、客户端与服务器字符集不一致的处理

如果客户端和数据库字符集不一致,Informix 会尝试自动转换,但可能导致乱码。

正确做法 ✅

客户端与数据库字符集保持一致

export DB_LOCALE=en_US.utf8
export CLIENT_LOCALE=en_US.utf8

或显式指定转换(不推荐长期使用)

export GL_USEGLU=1

五、常见中文环境配置示例

✅ UTF-8(推荐)

export DB_LOCALE=en_US.utf8
export CLIENT_LOCALE=en_US.utf8
CREATE DATABASE cndb LOCALE "en_US.utf8";

✅ GBK(老系统)

export DB_LOCALE=zh_CN.gb
export CLIENT_LOCALE=zh_CN.gb

六、注意事项(非常重要)

  1. 数据库一旦创建,字符集不可修改
  2. 修改字符集只能:
    • 新建数据库
    • 重新导入数据
  3. 客户端工具(如 dbaccess、isql、JDBC)也必须匹配字符集
  4. Linux 系统 locale 与 Informix 不一定完全一致

七、检查 Linux 系统是否支持该字符集

locale -a | grep utf8

如果你愿意,可以告诉我:

  • Informix 版本(如 12.10 / 14.10)
  • 数据库用途(中文 / 国际化)
  • 当前乱码情况

我可以帮你给出最合适的一套字符集配置方案。

0 踩