java - JDBC 中的字符集

标签 java jdbc oracle11g

我使用的是oracle 11G,字符集为utf8。我有一张 table ,里面有日语和中文字符。

当我使用简单的 JDBC 程序查询数据库时,我只得到问号作为输出。

有人可以帮我吗?

最佳答案

好吧,你是这么说的

SELECT value
  FROM v$nls_parameters
 WHERE parameter = 'NLS_CHARACTERSET'

返回UTF8?这是非常不寻常的,尤其是在 11g 中——更常见的是看到 AL32UTF8 的值,它是 Unicode 标准的更新版本。

当您查看数据库中实际存储的数据时会发生什么?如果您直接对数据库运行通过 JDBC 运行的相同查询,但调用 DUMP 函数而不是仅选择列,那么输出是什么?

SELECT DUMP( column_name, 1016 ) 
  FROM table_name
 WHERE some_key = some_value

您是否使用瘦 Oracle JDBC 驱动程序?或者您使用的是 OCI JDBC 驱动程序吗?或者您是否如标签所暗示的那样使用 Oracle ODBC 驱动程序和 JDBC-ODBC 桥?后者在当今时代是非常不寻常的——如果数据库平台提供 native JDBC 驱动程序,则确实没有理由使用 JDBC-ODBC 桥驱动程序。

客户端是否设置了NLS_LANG

关于java - JDBC 中的字符集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9976656/

相关文章:

java - 程序添加太多按钮

java - 我收到以下代码的 SQL 语法错误和许多异常

java - JDK 的第一个版本是如何进行单元测试的?

java - 使用ExecutorService时如何管理内存?

java - 更新记录后如何获取最后一个ID?

oracle - 执行几次后查询非常慢

mysql - 通过 SQL 根据匹配模式从表中检索名称?

sql-server - 具有多个数据库服务器的 ServiceStack OrmLite

java - 使用泛型来增加集合

jdbc - 为什么数据库的编程接口(interface)称为驱动程序?