【问题标题】:org.xml.sax.SAXParseException: Invalid byte 2 of 3-byte UTF-8 sequenceorg.xml.sax.SAXParseException:3 字节 UTF-8 序列的字节 2 无效
【发布时间】:2012-10-16 23:15:14
【问题描述】:

我在生产环境中遇到上述错误,而在 UAT 中该过程正常。

我想知道这个错误是否与 jar 文件加载有关。我们正在使用 webmethods 并且 java 服务发生了上述错误。

【问题讨论】:

  • 您能提供更多信息吗?也许是完整的堆栈跟踪,也许是一些代码,也许是示例文件?此外,如果您能找出示例文件中检测到无效字符的位置...最后尝试将生产文件传播到 UAT 并查看错误是否仍然存在
  • ah kom craquelé turq 12cm 上面的 xml 在 UAT 中解析,而同一文件在生产中失败...
  • 我已经找到了这个问题的确切原因。问题是生产环境中存在的语言环境和默认字符,接受程度不同。我使用了这个 String deEncoding= ""+Charset.defaultCharset ();String locale=""+Locale.getDefault();找到语言环境..编码和语言环境不同..我在 byteArray = inputInXML.getBytes("UTF-8"); 中硬编码了值 UTF-8结果就是成功

标签: java xml-parsing saxparser webmethods


【解决方案1】:

最可能的情况是文件采用 ISO-8859-1 编码并包含扩展的 ASCII(包括 0x80 和 0xff 之间的字符)。解析器需要 UTF-8,其中一个扩展字符被解释为 3 字节序列的开始,但后面没有在该位置有效的字节。

【讨论】:

  • 我已经找到了这个问题的确切原因。问题是生产环境中存在的语言环境和默认字符,接受程度不同。我使用了这个 String deEncoding= ""+Charset.defaultCharset ();String locale=""+Locale.getDefault();找到语言环境..编码和语言环境不同..我在 byteArray = inputInXML.getBytes("UTF-8"); 中硬编码了值 UTF-8结果就是成功
【解决方案2】:

你加载的xml文件编码不正确:看看生产环境文件,至少有一个不是UTF-8的。

【讨论】:

  • 感谢您的回复..我已经检查了所有文件,并且都是 UTF-8 编码的...我对 jar 文件有疑问..这个异常是否与 jars 有关..
  • 生产和测试中的罐子是一样的吗?查看两个环境之间的差异。 jar 可能包含在运行时解析的 XML 文件。
  • castor-xml-schema-1.2.jar 这个jar文件有什么用。
  • Castor 提供 Java-to-XML 绑定、Java-to-SQL 持久性等。
  • 在目录中提取其内容,将其添加到类路径中,从类路径中删除 jar,再次运行并粘贴完整的异常堆栈,也许我们可以帮助您...
猜你喜欢
  • 2018-12-26
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2015-06-15
相关资源
最近更新 更多