ifx
编码问题
字符编码及Informix中文支持配置方法
951错误
特殊字符处理
常用脚本与sql
unload相关
本文档使用 MrDoc 发布
-
+
首页
编码问题
摘自 [这里](https://www.cnblogs.com/flance/p/3977947.html "https://www.cnblogs.com/flance/p/3977947.html") # 正确理解informix数据库所必须的四个基础概念 ## 1、客户机语言环境— Client locale 客户机语言环境指定客户机应用程序用于执行读和写(I/O)操作的语言、地域和代码集。 在客户机应用程序中,I/O 操作包括读取键盘输入或要发送至数据库的数据文件,以及将数据库服务器从数据库中检索的数据写入屏幕、文件或打印机。 通过 CLIENT_LOCALE 来设置客户机语言环境。 ## 2、数据库语言环境— Database locale 通过 DB_LOCALE 环境变量设置的数据库语言环境指定数据库服务器用于正确解释特定数据库中语言环境相关的数据类型(NCHAR 和 NVARCHAR)所需的语言、地域和代码集。 DB_LOCALE 中指定的代码集确定哪些字符在任何字符列中都是有效的,并且确定数据库对象(如数据库、表、列和视图)的名称。 数据库服务器使用 DB_LOCALE 环境变量指定的数据库代码集将数据传入和传出数据库。 ## 3、服务器语言环境— Server locale 数据库服务器使用 SERVER_LOCALE 环境变量指定的服务器代码集写文件(如调试和警告文件)。 但是,数据库服务器不使用服务器语言环境来写入采用 Informix 专用格式的文件(数据库和表文件)。 ## 4、服务器处理语言环境— Server processing locale 数据库服务器使用数据库语言环境的代码集作为服务器处理语言环境的代码集 , 使用服务器处理语言环境来写入采用 Informix 专用格式的文件(数据库和表文件)。 也就是说数据库服务器使用数据库语言环境(DB_LOCALE)来写入采用 Informix 专用格式的文件(数据库和表文件)。 # 引入正确的jdbc jar文件 jar文件列表如下,jar文件至少需要这10个,缺一不可: ``` ifxjdbc.jar ifxjdbc-g.jar ifxjdbcx.jar ifxjdbcx-g.jar ifxlang.jar ifxlsupp.jar ifxsqlj.jar ifxsqlj-g.jar ifxtools.jar ifxtools-g.jar ``` 这个关键点非常有必要强调一下:理论上来说,让Informix启动起来只需要ifxjdbc.jar即可,但是没有其他的jar文件,你的中文问题永远都解决不了!老子当初就是只引入了必要的五六个jar,到最后怎么调都调不对这个乱码,就在这一个点上耗费了绝大部分的时间。 # 查看当前系统下所有的数据库编码 select * from sysmaster:sysdbslocale 该语句可以查询出当前数据库中所有database所使用的编码格式。 # 书写正确的jdbc url JDBC URL(UTF-8编码示例): ``` jdbc:informix-sqli:6.1.14.38:48101/ccdb2:informixserver=ccdb;NEWCODESET=utf8,8859-1,819;CLIENT_LOCALE=en_US.utf8;DB_LOCALE=en_US.8859-1; ``` JDBC URL(GBK编码示例): ``` jdbc:informix-sqli:6.1.14.38:48101/ccdb2:informixserver=ccdb;NEWCODESET=GB18030-2000,8859-1,819;CLIENT_LOCALE=zh_CN.gb;DB_LOCALE=zh_CN.gb; ``` 这个点也必须强调一下,它的重要性仅次于关键点二。在java中,我们使用的编码叫UTF-8,但在Informix中,这种编码格式的正确书写是utf8,而不是utf-8!另外,GBK编码在Informix系统下叫做gb或者GB18030-2000,你要是在url中写成GBK是识别不出来的。 # 确认Informix服务器支持UTF-8格式 使用locale -a 命令,然后检查是否支持zh_CN.UTF8(注en_US.UTF-8亦可) # 客户端连接工具的编码调整。 注:使用SecureCRT显示zh_CN.UTF8字符时,应该当在 会话选项->终端->外观 精确字体中选择UTF-8,否则将显示乱码。 # 总结 关键点二、关键点四是解决Informix乱码问题的重中之重,只要这两个关键点不出问题,中文肯定能够正常读写到数据库中。另外,需要注意的是,这套解决方案只针对部署在Linux/Unix上的Informix,并且测试有效。
major
2024年6月16日 16:28
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码