【发布时间】:2009-12-01 14:42:57
【问题描述】:
所以我有一个带有表的数据库,其中一个条目是“é€áí”,我知道这在数据库中是正确的。它存储为 clob。
在 Java 中,我这样检索条目:
String text = resultSet.getString(DBConstants.COL_NOTE_TEXT);
调试时,文本等于'é\u0080áí',当显示在屏幕上时,欧元符号是一个方块。
有人见过这个吗?有什么建议吗?
提前致谢。
【问题讨论】:
-
这很有趣,因为字符 U+0080 是 Unicode 字符“
”(所以它不打印也就不足为奇了)。欧元符号实际上是 U+20AC。我对为什么会发生这种情况没有实际的想法,但这可能会给你一些线索...... -
忘记提及 - 我知道 \u0080 是欧元符号,但为什么它不只是转换为欧元符号。如果我做 text.replaceAll("\u0080", "€"),一切都是上帝。但为什么我必须这样做?干杯。
-
哦,好的!我以为我在某个地方读到了欧元符号……好吧,更困惑!
-
你怎么知道它在数据库中是正确的?特别是,我看到了一些相当奇怪的行为,当您尝试直接在数据库中查看文本时,使用某种奇怪的机制插入的文本实际上会正确显示,具体取决于您的设置方式。例如,如果您将客户端 NLS_LANG 设置为 UTF8,并使用不支持 UTF-8 的客户端(在我的情况下为 PL/SQL Developer 6.5)查看数据,即使不支持,它也可能看起来正确。
-
哦,还有,你用的是什么JDBC驱动,数据库是什么版本的?
标签: java oracle character-encoding clob