小编ale*_*x.p的帖子

JDBC对Oracle的调用返回3个问号

我使用JDBCTemplate调用oracle存储过程,它具有STRUCT的输入/输出参数.此结构上的一个字段是VARCHAR,它根据存储过程逻辑进行更新.但是当从调用返回时它只包含三个问号 - '???'.这可能是Riddler的工作,但听起来更像是char编码问题.

这工作正常,直到我们将数据库切换到具有WE8ISO8859P15(ISO8859)字符编码的数据库,这是通过执行以下操作检索的:

SELECT NLS_CHARACTERSET FROM NLS_DATABASE_PARAMETERS
Run Code Online (Sandbox Code Playgroud)

以前工作的字符集是WE8MSWIN1252(MSWIN-1252),它工作正常.所以我猜这是一个字符集问题,虽然我有点小心,因为它总是只返回3个问号,无论应该返回多少文本.

据我所知,底层的JDBC驱动程序(jdbc:oracle:thin)会自动执行所有字符编码,并将数据库字符集转换为UTF-16(Java字符编码)但是看起来没有发生这种情况.我正在使用StoredProcedure类(Spring的一部分)来调用StoredProcedure.

我也尝试将orai18n.jar添加到类路径中,但没有成功.然而,考虑到ISO-8859是一个非常标准的字符集似乎很不寻常,所以我可能会走错路.

任何帮助将不胜感激.

java oracle jdbc spring-jdbc

3
推荐指数
1
解决办法
3463
查看次数

标签 统计

java ×1

jdbc ×1

oracle ×1

spring-jdbc ×1