2017-01-19 22 views
-2

我将非拉丁内容编码为base64,它们是从大型机编码的。 我正在解码此内容并将其插入配置为UTF-8字符集的Oracle DB中。 但所有非拉丁字符都显示为垃圾。 即使Umalut文字记录器也显示为垃圾。变音和非拉丁字符在UTF-8字符集中显示为垃圾数据库DB

6个月前,这段代码工作正常。只有最近我在测试时才出现Bug。 这个错误的原因是什么? 是否有任何更新OracleUnix框可能导致此?

感谢

+0

你在哪里看到乱码输出?它可能是客户端中的一个设置。你有没有检查过旧的条目(当它工作正常时返回)现在看起来也是乱码? –

+2

“umalut charecter”听起来像是指环王那些“南方人”型敌人之一。 –

+0

你如何解码你的BASE64字符串?客户端的'NLS_LANG'值是多少?如何将解码后的数据插入Oracle?使用[DUMP](http://docs.oracle.com/database/121/SQLRF/functions063.htm#SQLRF00635)函数验证您的数据,以查看数据库中的数据是否真的错误或仅“错误地显示在客户端上程序。 –

回答

1

你得到从大型机内容,因此数据库的编码是一种无关紧要的。
你真正需要做的是找出传入base64编码数据中的非拉丁字符的编码,并且在从base64解码之后,也可以从任何字符集转换为UTF-8。 当您测试时它工作正常,因为您提供的输入格式与计算机的格式相同(UTF-8),而不是主机提供给您的格式。

+0

虽然我不是在这里的OP,我的coleague使用我的ID发布他的问题。感谢你的回答。 – NJMR