我使用的是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/