使用java从WE8ISO8859P1中编码的Oracle数据库中读取阿拉伯语文本

时间:2015-08-12 07:22:01

标签: java oracle encoding utf-8 arabic

我连接到具有NLS_CHARACTERSET(WE8ISO8859P1)的Oracle数据库,据我所知,该数据库不支持存储阿拉伯语文本。

但Toad for Oracle可以从这个数据库中读取阿拉伯语:

Toad:

但是,我无法使用java代码阅读此内容。

即使我尝试使用UTL_RAW.CAST_TO_RAW

以字节为单位获取它们的行

结果是“218,227,237,225,228,199,32,199,225,218,210,237,210,161,225,222,207,32,199,211,202,229,225,223,202,32,32,56,48,37,32,227,228,32,230,205,207,199,202,32,221,225,237,223,211,32,32,32”

在测试java类中,我尝试使用上面提到的字节创建新的String(new char [] {}),没有运气显示阿拉伯字符。

有任何帮助吗?谢谢你。

1 个答案:

答案 0 :(得分:0)

这可能是由很多事情造成的:

  1. 检查数据库中的列类型NVARCHAR而不是VARCHAR(注意单词开头的" N"

  2. 尝试将charset=utf8放入连接字符串

  3. 使用UTF-8编码将byte[]转换为字符串,如下所示

    String arabicText = new String(byteArray, "UTF-8");