在Oracle和Java中获取UTF-8字符问题

wnrlj8wa  于 2022-09-18  发布在  Java
关注(0)|答案(3)|浏览(259)

在Oracle中有一个表,其中包含列类型为NVARCHAR2。在这篇专栏文章中,我试图拯救俄罗斯人。但它显示的是这样的。当我尝试从Java获取相同的字符时,我得到的是相同的字符串。

我试过NCHAR``VARCHAR2。但在所有情况下都是同一个问题。

这个问题是来自Java还是Oracle?我已经尝试了相同的Java代码,相同的字符使用PostgreSQL,运行良好。我不明白这个问题是来自Oracle还是Java?

在我的Oracle数据库中,NLS_NCHAR_CHARACTERSET属性值是AL16UTF16。您知道如何在保存在Oracle中的Java中显示UTF-8字符吗?

dffbzjpn

dffbzjpn1#

角色的问题是你不能相信你的眼睛。也许数据库存储了正确的字符值,但您的查看工具无法理解它们。或者,由于语言设置的原因,字符可能会在一路上进行转换。

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

示例:

select dump(mycolumn),mycolumn from mytable;

这将为您提供数据的字节值,您可以检查表中的值是否与其应有的值相同。

9lowa7mx

9lowa7mx2#

在谷歌上搜索了一下之后,我解决了我的问题。以下是ANS: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

rhfm7lfc

rhfm7lfc3#

从数据库获取连接时需要指定useUnicode=true&characterEncoding=UTF-8。还要确保该列支持UTF-8编码。通过Oracle documentation

相关问题