com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequ



我正在开发一个Servlet,它使用POST发送信息。根据部署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代码中更改一些编码。提前感谢。


你所击中的看起来像一个编码问题。如果在将字节数组转换为Java字符串时未指定编码,JVM将使用平台的默认编码。在大多数情况下,默认编码是utf-8,效果很好。然而,我看到许多操作系统安装的编码只是US-ASCII。

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

最新更新