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, 则我们的解决方案如上所示。