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;