使用getString字符编码的Java clob检索问题

使用getString字符编码的Java clob检索问题,java,oracle,character-encoding,clob,Java,Oracle,Character Encoding,Clob,所以我有一个数据库和一个表,其中一个条目是“éeuroáí”,我知道这在数据库中是正确的。它存储为clob 在Java中,我检索条目的方式如下: String text = resultSet.getString(DBConstants.COL_NOTE_TEXT); 调试时,文本等于“é\u0080áí”,当显示在屏幕上时,欧元符号为方形块 有人见过这个吗?有什么建议吗 提前感谢。0080是Windows Western编码(cp-1252)中的欧元字符;在Unicode中是20AC。您可能

所以我有一个数据库和一个表,其中一个条目是“éeuroáí”,我知道这在数据库中是正确的。它存储为clob

在Java中,我检索条目的方式如下:

String text = resultSet.getString(DBConstants.COL_NOTE_TEXT);
调试时,文本等于“é\u0080áí”,当显示在屏幕上时,欧元符号为方形块

有人见过这个吗?有什么建议吗


提前感谢。

0080是Windows Western编码(cp-1252)中的欧元字符;在Unicode中是20AC。您可能需要检查输入的编码。要检查的另一件事是屏幕是否能够显示欧元符号。如果显示“\u20AC”,则该部分已应答。

请参阅:


我想这是我的问题。不过,感谢您的帮助。

这很有趣,因为字符U+0080是Unicode字符“”(因此不打印也就不足为奇了)。欧元符号实际上是U+20AC。我不知道为什么会发生这种情况,但这可能会给你一些线索…忘了提一下-我知道\u0080是欧元符号,但为什么它不仅被转换为欧元符号。如果我做text.replaceAll(“\u0080”和“€”),一切都是上帝。但我为什么要这么做?干杯。哦,好的!我想我在什么地方读到了欧元的符号…好吧,更困惑了!你怎么知道它在数据库中是正确的?特别是我看到了一些非常奇怪的行为,当您尝试直接在DB中查看时,使用某种bizarro机制插入的文本实际上会正确显示,这取决于您如何设置它。例如,如果您将客户机NLS_LANG设置为UTF8,并使用不支持UTF-8的客户机(在我的例子中是PL/SQL Developer 6.5)查看数据,即使它不支持UTF-8,也可能看起来是正确的。哦,还有,您使用的是什么JDBC驱动程序以及数据库的哪个版本?请告诉我,我刚刚写了这个:-p问题可能是数据库正在存储cp1252数据(在这种情况下,您将Java类型更改为BLOB),也可能是与数据传输相关的内容(必须将其编码为字节)。