我在本地安装了此设置,并且在将xml字符串插入sql表的xml类型列中时遇到了此错误。请仔细阅读并分享您的想法以解决此问题。
注意:我正在将SAXBuilder用于xmldocument,并在将该xml文档作为参数传递之前使用了format.setEncoding(“ UTF-16”)。 还需要注意的是,当我使用tomcat 8和9运行应用程序时,没有看到任何此类问题。仅当我与WebSphere集成时,我才看到此问题。
服务器:Websphere Application Server 8.5.5.14 SQL Server :2014年 使用的JDBC :sqlJdbc41.jar和sqljdbc4.jar 使用的目标IBM JDK :jdk1.7_64
错误详细信息:
Cause SQL Exception Info for exception at level 0 - SQL State: 'S0001'; SQL Error Number: '9402'; SQL Error Text: 'XML parsing: line 1, character 39, unable to switch the encoding
com.microsoft.sqlserver.jdbc.SQLServerException: XML parsing: line 1, character 39, unable to switch the encoding
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:1295)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:836)
尝试了以下选项,但我没有帮助。
更新了WebSphere \ AppServer \ Properties \ encoding.properties(WAS)文件,以将该条目en = ISO-8859-1保留为en = UTF-8。
也对UTF-16进行了上述尝试。
也尝试更新JVC通用参数中的以下内容。 -Dclient.encoding.override = UTF-8 -Dfile.encoding = UTF-8
由于我的应用程序使用的是tomcat,因此我不希望通过使用CAST /或传递带有前缀N'xxxmlxx'的xmlstring来更改任何代码来更正xml字符串。我很快也会尝试更改此代码。同时,任何其他想法都将真正有帮助。
我需要尝试使用最新的jdbc jar(mssql-jdbc-6.2.2.jre7.jar)吗? 我需要尝试使用Websphere捆绑的SDK 1.8吗?