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

标签 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类中,我尝试使用上述字节创建new String(new char[]{}),但没有成功显示阿拉伯字符。

有什么帮助吗? ,谢谢。

最佳答案

这可能是由多种原因引起的:

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

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

  3. 使用 UTF-8 编码将 byte[] 转换为字符串

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

关于java - 使用java从以WE8ISO8859P1编码的Oracle数据库读取阿拉伯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958556/

相关文章:

c# - 发送一个填充特殊字符的字节数组

java - 具有参数化方法的工厂模式

java - 如何将 sysout 和 syserr 重定向到 java 中的自定义记录器?

sql - Access 和 ODBC/Oracle 都能理解的通用 SQL

sql - 基于字段值的多次插入?

javascript - 如何强制 XMLHttpRequest 仅使用 ISO-8859-1 字符集?

java - 实体表不是使用 JPA 2.1 创建的

java - 如何在 Apache PIG 中正确执行此内部连接?

sql - ORACLE:物化 View 的快速刷新在某些情况下不适用于 OUTER JOIN

python - 如何在 Python 2.7 中使用 UTF-8?