【问题标题】:com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException parsing XML in POST (Java Servlet)com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException 在 POST (Java Servlet) 中解析 XML
【发布时间】:2015-10-27 10:46:02
【问题描述】:

我正在开发一个使用 POST 发送信息的 Servlet。 我收到一个异常,具体取决于 servlet 的部署位置。 如果我在本地 JBoss EAP 7 上部署,它就像一个魅力。 但是,如果我部署到远程服务器(JBoss EAP 7 也是)我会收到以下错误:

代码

final InputStream is = new ByteArrayInputStream(xml);
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is);

错误

<message>
Failed to load XML: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Byte no válido 2 de la secuencia UTF-8 de 4 bytes

~ôJ뢺ÞjX³jwh•ªkyø«™§¬‚†Ú~*æiÊ+x„ÅÇ©¶*'ºè­©`zw«j¹Z~*æip(Ú½©Z </message>

有关更多信息,servlet 有一个 jboss-deployment-structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.1">
  <deployment>
    <dependencies>
      <module name="javax.api"/>
      <module name="org.apache.santuario.xmlsec"/>
      <module name="org.apache.xerces" />
      <system export="true">
        <paths> 
          <path name="com/sun/org/apache/xerces/internal/dom"/>
        </paths>
      </system>
    </dependencies>
  </deployment>
</jboss-deployment-structure>

涉及 xerces 库的地方。 我不明白我的问题是否与该 xml 相关,或者我应该更改服务器/servlet 代码中的一些编码。 提前谢谢。

【问题讨论】:

    标签: jakarta-ee servlets jboss jboss7.x xerces


    【解决方案1】:

    巴杜拉克,
    您所击中的内容看起来像是编码问题。如果在将字节数组转换为 Java 字符串时未指定编码,JVM 将使用平台的默认编码。在大多数情况下,默认编码是 utf-8,效果很好。但是,我见过许多操作系统安装,其中的编码只是 US-ASCII。

    如果这是您的问题,您可以在 Java 命令行上将默认编码设置为 JVM 选项,或者将平台上的编码更改为 utf-8。

    【讨论】:

    • 谢谢,你能更好地解决这个问题吗
    • 在基于 Unix 的系统上运行“locale”命令,输出的第一行应该告诉你默认编码。
    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2012-08-26
    相关资源
    最近更新 更多