java - Oracle 10g Clob 列中的特殊字符(UTF8 字符)返回为 ?或在 Java 中为空白

标签 java jdbc utf-8 character-encoding clob

我们有一个表,将 XML 存储为 CLOB (Oracle 10g)。

这些 XML 通常包含一些特殊字符

e.g `FDEAÂ’s`

当我使用 SQLDeveloper 查询此记录并将 XML 以 UTF8 编码保存在记事本中时,会出现特殊字符。

但是当我尝试通过 JDBC 查询相同内容时,我得到的是?或者这些字符为空白。

我尝试了下面链接中提到的多个选项(使用字符集等),但找不到解决方案。

还在 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 足够智能,可以显示各种特殊字符,但是像记事本/textpad/notepad++ 这样的工具需要正确的设置才能开始显示特殊字符。

5) 检查类路径中是否需要 orai18.jar。需要此 jar 来支持与 CLOB 和 oracle 类型等相关的支持。

关于java - Oracle 10g Clob 列中的特殊字符(UTF8 字符)返回为 ?或在 Java 中为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16607166/

相关文章:

java - 我可以使用单个数组来填充创建多维数组吗?

java - 将相同参数添加到准备语句中多个位置的巧妙方法

php - UTF-8编码问题

ios - NSString:处理基于 UTF8 的 API

java - 如何在运行时从 bean 到 json 排除属性

java - 除非重新启动 Glassfish 服务器,否则不会反射(reflect)属性文件更改

Java ZonedDateTime 和英国夏令时间

jdbc - Spark 不支持的方法

java - 如果插入语句给出重复键异常(在表中找到行 id = 1)如何更新 JDBC(Postgresql)中的语句

java - 如何处理来自 Google map 服务器的重音字符(如 République 中的 é)作为 Android 中的响应