windows环境下qt通过odbc连接oracle中文乱码的解决

方法一:

regedit 打开注册表编辑,找到项目
HKEY_LOCAL_MACHINE -> SOFTWARE -> oracle -> KEY_OraClient11g_home1 -> NLS_LANG
把原先的值 SIMPLIFIED CHINESE_CHINA.ZHS16GBK, 改为SIMPLIFIED CHINESE_CHINA.AL32UTF8。

方法二:

在程序里对注册表进行修改。

QSettings setOrc("HKEY_LOCAL_MACHINE\\software\\oracle\\KEY_OraClient11g_home1", QSettings::NativeFormat);

setOrc.setValue("NLS_LANG", QString::fromLocal8Bit("SIMPLIFIED CHINESE_CHINA.ZHS16GBK"));

程序开始时把注册表修改,退出程序之前要改回原样。以免对其它程序造成干扰。

方法三:

不做上面的修改,直接在sql语句里,对汉字字段加上内码转换函数。比如:

SELECT CONVERT(name, 'AL32UTF8'), CONVERT(case when sex_code = 'F' then '女' else '男' end, 'AL32UTF8'), card_no  FROM FIN_OPR_REGISTER;

posted @ 2020-12-18 15:55  桑底坡  阅读(727)  评论(0)    收藏  举报