OBDC插入中文字符为乱码问题
问题描述
数据库服务端操作系统:RHEL 6.9
数据库类型:达梦7
数据库初始化字符集:GB18030
ODBC执行端操作系统:HP_UX B.11.31
ODBC版本:2.3.0
在ODBC终端执行插入中文字符串操作提交后,查看该数据发现中文字符串数据为乱码。
问题描述
1.确认数据库中存储内容是否是乱码??
到数据库服务端查看该数据也是乱码,并把该服务端的终端字符集修改为中文 EXPORT LANG=zh_CN 再次查看该数据还是为乱码。
2.修改ODBC执行窗口字符集是否是终端窗口字符集与数据库字符集不一致造成??
在ODBC执行端窗口执行EXPORT LANG=zh_CN修改字符集为中文字符集。然后执行类型的中文字符数据插入,并查看该数据为乱码。
3.重新安装执行端ODBC并加装中文字符集, 是否是ODBC字符集与数据库字符集不一致造成??
卸载ODBC后,在安装前执行configure命令添加enable-icony 和with-iconv-char-enc参数使生成的makefile编译文件中包含中文字符集(命令示例:./configure --prefix=/usr/local/unixODBC-2.3.0 --includedir=/usr/include --libdir=/lib64/lib --sysconfdir=/etc --enable-gi=no --enable-icony=yes --with-iconv-char-enc=GB18030 ) 安装成功后在ODBC执行端窗口执行中文字符数据插入,查看确认该数据为正确的中文字符数据。
总结
根据以上情况确认是ODBC执行端的HP_UX B.11.31操作系统,在默认安装ODBC前configure命令不会添加中文字符集到编译文件中造成,中文字符数据插入时采用字符集和数据库服务端初始化字符集不匹配引起该问题。