簡體   English   中英

com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException解析POST中的XML(Java Servlet)

[英]com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException parsing XML in POST (Java Servlet)

我正在開發一個使用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代碼中的某些編碼。 提前想一下。

Badulake,
您遇到的問題似乎是編碼問題。 當您在將字節數組轉換為Java字符串時未指定編碼時,JVM將使用平台的默認編碼。 在大多數情況下,默認編碼為utf-8,效果很好。 但是,我已經看到許多操作系統安裝,其中的編碼僅僅是US-ASCII。

如果這是您的問題,則可以在Java命令行上將默認編碼設置為JVM選項,也可以將平台上的編碼更改為utf-8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM