0

在 Oracle 中有一个包含列类型的表是NVARCHAR2. 在本专栏中,我试图保存俄语字符。但它显示 ¿¿¿¿¿¿¿¿¿¿¿ 像这样。当我尝试从 Java 中获取相同的字符时,我得到了相同的字符串。

我试过了NCHAR VARCHAR2。但在所有情况下都是相同的问题。

这个问题来自 Java 还是 Oracle?我尝试了相同的 Java 代码,使用 PostgreSQL 的相同字符,效果很好。我不知道这个问题是来自 Oracle 还是 Java?

在我的 oracle 数据库NLS_NCHAR_CHARACTERSET中,属性值为AL16UTF16. 任何想法如何在保存在 Oracle 中的 Java 中显示 UTF-8 字符。

4

3 回答 3

1

人物的问题是你不能相信你的眼睛。也许数据库存储了正确的字符值,但您的查看工具不理解它们。或者,由于语言设置,字符可能会在某处被转换。

要找出表中存储了哪些字符值,请使用以下dump函数:

例子:

select dump(mycolumn),mycolumn from mytable;

这将为您提供数据的字节值,您可以检查表中的值是否与它们应有的一样。

于 2013-06-21T11:48:03.713 回答
1

做了一些谷歌后,我解决了我的问题。这是答案:AL32UTF8 is the Oracle Database character set that is appropriate for XMLType data. It is equivalent to the IANA registered standard UTF-8 encoding, which supports all valid XML characters.

这意味着在Oracle中创建数据库时,设置AL32UTF8字符集。

这是此链接

http://docs.oracle.com/cd/B19306_01/server.102/b14231/create.htm#i1008322

于 2013-06-25T05:26:01.213 回答
0

您需要useUnicode=true&characterEncoding=UTF-8 在从数据库获取连接时指定。还要确保该列支持UTF-8编码。浏览Oracle 文档

于 2013-06-21T07:36:08.300 回答