1、问题
Qt使用odbc连接oracle数据库,如果字段中有中文数据,查询出来以后是乱码
2、环境
Qt5.8.0 + vs2015
Oracle11G 数据库编码格式ZHS16GBK(在windows下安装的数据库服务,即创建数据库的时候使用默认编码)
3、解决方法
(1) 方法一:修改注册表
regedit 打开注册表编辑,找到项目
HKEY_LOCAL_MACHINE -> SOFTWARE -> oracle -> KEY_OraClient11g_home1 -> NLS_LANG把原先的值 SIMPLIFIED CHINESE_CHINA.ZHS16GBK, 改为SIMPLIFIED CHINESE_CHINA.AL32UTF8。
Ps:修改注册表方法参照https://www.cnblogs.com/sundp/p/14155351.html修改实现。
(2) 方法二:使用QOCI驱动
编译QOCI驱动连接数据库,可以正常显示中文。
4、其他
(1) 其他方法:
修改odbc中的变量方法尝试过,但是未有效果,可能与qt版本或数据库配置有关,如果当前方法无效的可以进行尝试:参照https://blog.csdn.net/My__God/article/details/52984243?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242
(2) 查看数据库编码方法
打开plsql,执行sql:select userenv('language') from dual