程序采用ODBC连接Oracle数据库查询数据中文乱码
系统环境windows2012R2, instantclient_12_2的ODBC驱动,使用了plsql工具连接数据库,查询数据是正常的。
在plsql中执行select userenv('language') from dual 得到的结果是SIMPLIFIED CHINESE_CHINA.US7ASCII
配置了环境变量NLS_LANG,但是没用。
ODBC连接Oracle数据库应该没有设置编码格式
userenv('language')这个是查的客户端的字符集。
oracle数据库中,没有提供任何以sql的方式来查询数据库的字符集。
这代表在大多数时候,应用开发不需要管oracle数据库的字符集。
然后你查到的客户端字符集为US7ASCII,这玩意肯定是不能显示中文的,这个东西取的是你的环境变量NLS_LANG中的配置,所以你当前NLS_LANG就配置错了。
字符集这一段,如果要显示简体中文,要么配置成AL32UTF8,要么配置成ZHS16GBK,至于配置成哪个,应该与你的应用代码页保持一致。
更多关于oracle字符集的内容,可以参考我这篇文章