java.sql.SQLException: 不支持的字符集:oracle-character-set-178

java.sql.SQLException: Non supported character set: oracle-character-set-178

我的应用程序运行 以下配置 TOMCAT - 6.0.18 数据库-Oracle 11g企业版(11.2.0.2.0) Java 版本 - jdk 1.6 JDBC 驱动程序 - OJDBC14.jar(不确定确切版本)

当我将 Oracle 数组类型值从 java 传递到存储过程时,出现 Oracle-Character-set-178 错误。查找以下错误消息。

java.sql.SQLException:不支持的字符集:oracle-character-set-178

下面是我正在执行的代码

String query = "{call DBA.SP_XXXX(?,?,?)}"; 
con = this.getConnection();
con=((DelegatingConnection) con).getInnermostDelegate();
oracle.sql.ArrayDescriptor descrip =oracle.sql.ArrayDescriptor.createDescriptor("DBA.ARRAY_TABLE", con);            
oracle.sql.ARRAY oracArray = new oracle.sql.ARRAY(descrip, con, arrayValue);
cs = con.prepareCall(query);                
cs.setString(1,ID); 
cs.registerOutParameter(2, java.sql.Types.VARCHAR); 
cs.setObject(3,oracArray); 
cs.execute();   

下面是我的oracle的字符集值returns

参数值

NLS_CHARACTERSETWE8MSWIN1252 NLS_NCHAR_CHARACTERSET AL16UTF16

我不确定 OJDBC14.jar 的确切版本在我当前的设置中是 运行 但是当我尝试用最新的 OJDBC14 替换时出现以下错误 java.lang.NoSuchMethodError: 甲骨文.i18n.text.converter.CharacterConverterOGS.getInstance(I)Loracle/sql/converter/CharacterConverters;

请告诉我问题所在和解决方案

使用以下解决方案解决了我的问题:将 ojdbc14.jar 替换为支持我的 oracle 11.2.0.2 的 ojdbc6.jar 和 orai18n.jar 的确切版本。

同样的错误!

我用的是 spring,所以如果你也这样做,它会用 add the orai18n.jar to classpath 之类的东西引导你进入错误,这就是你应该做的,但如果你这样做了,错误是坚持要出现,mkdir 一个 lib 目录到你的根目录,并用你选择的版本的 oracle jar 填充它,并使用 maven 插件在你的编译中包含 jars。

任何 jar 都应该由编译范围提供,这样你就不会出现生产错误。

add this dependency:     
<dependency>
  <groupId>com.oracle.ojdbc</groupId>
  <artifactId>orai18n</artifactId>
  <version>19.3.0.0</version>
</dependency>