在Oracle中有一个表,其中包含列类型为NVARCHAR2
。在这篇专栏文章中,我试图拯救俄罗斯人。但它显示的是这样的。当我尝试从Java获取相同的字符时,我得到的是相同的字符串。
我试过NCHAR``VARCHAR2
。但在所有情况下都是同一个问题。
这个问题是来自Java还是Oracle?我已经尝试了相同的Java代码,相同的字符使用PostgreSQL,运行良好。我不明白这个问题是来自Oracle还是Java?
在我的Oracle数据库中,NLS_NCHAR_CHARACTERSET
属性值是AL16UTF16
。您知道如何在保存在Oracle中的Java中显示UTF-8字符吗?
3条答案
按热度按时间dffbzjpn1#
角色的问题是你不能相信你的眼睛。也许数据库存储了正确的字符值,但您的查看工具无法理解它们。或者,由于语言设置的原因,字符可能会在一路上进行转换。
要找出表中存储了哪些字符值,请使用
dump
函数:示例:
这将为您提供数据的字节值,您可以检查表中的值是否与其应有的值相同。
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
rhfm7lfc3#
从数据库获取连接时需要指定
useUnicode=true&characterEncoding=UTF-8
。还要确保该列支持UTF-8
编码。通过Oracle documentation。