我们有一个将 XML 存储为 CLOB (Oracle 10g) 的表。
这些 XML 通常包含一些特殊字符
e.g `FDEAÂ’s`
当我使用 SQLDeveloper 查询此记录并将 XML 在记事本中保存为 UTF8 编码时,会出现特殊字符。
但是当我尝试通过 JDBC 查询相同的内容时,我得到了?或这些字符为空白。
我尝试了以下链接中提到的多个选项(使用 CharacterSet 等),但找不到解决方案。
还在 Java 1.5 和 1.6 上检查了这一点,但问题仍然存在。
我们有一个将 XML 存储为 CLOB (Oracle 10g) 的表。
这些 XML 通常包含一些特殊字符
e.g `FDEAÂ’s`
当我使用 SQLDeveloper 查询此记录并将 XML 在记事本中保存为 UTF8 编码时,会出现特殊字符。
但是当我尝试通过 JDBC 查询相同的内容时,我得到了?或这些字符为空白。
我尝试了以下链接中提到的多个选项(使用 CharacterSet 等),但找不到解决方案。
还在 Java 1.5 和 1.6 上检查了这一点,但问题仍然存在。
我过去遇到过同样的问题。这里有一些提示:
1) 以编程方式设置 nls_lang 参数(如果尚未设置)。
Locale.setDefault(Locale.<your locale here>);
2)尝试在环境变量中将编码设置为UTF8(如果您在文件中输出结果)
java -Dfile.encoding=UTF-8 … com.x.Main
3)正如您提到的从 JDBC 中“选择”,请检查 eclipse 设置。
Window--> Workspace --> Text File encoding --> Other --> UTF8
4) SQL-Developer 足够聪明,可以显示各种特殊字符,但是像 notepad/textpad/notepad++ 这样的工具需要适当的设置才能开始显示特殊字符。
5) 检查您是否需要类路径中的 orai18.jar。需要这个 jar 来支持与 CLOB 和 oracle 类型等相关的。