Linux下用OCCI读取windows下的oracle数据库中文乱码解决

1. 环境和要解决的问题

(1) oracle数据库在window系统下, server端字符集为AMERICAN_AMERICAN.ZHS16GBK

要求将oracle数据库中的数据插入到linux下的MySQL数据库, MySQL的字符集为utf8

(2) 此时用sqlplus和occi读取oracle数据库中的中文都会出现乱码

2. 解决

(1) sqlplus正确显示中文: export NLS_LANG=AMERICAN_AMERICAN.AL32UTF8
(2) OCCI正确显示中文: Environment env_ = Environment::createEnvironment("AL32UTF8", "AL32UTF8");
解决的思路是: 不要管server端的字符编码, 只要搞清楚现在所用机器的字符编码, 在链接数据库时, 将编码方式设置为此编码即可,则在读取数据时,会自动将server端的字符编码转换成链接数据库时使用的编码, 例如: ubuntu下的默认字符编码为utf8, mysql的字符编码也为utf8, 则我们的解决方案如上所示。

Reference

[1]  Oracle字符集的查看查询和Oracle字符集的设置修改
[2]  createEnvironment()

你可能感兴趣的:(Database,C/C++,故障分析解决)