2017-09-01 8 views
1

xmlの署名解凍に問題があり、変更されました。解凍されたxmlのテキスト内容がマングルされました

<DatoAdicional> 
     <Codigo>03</Codigo> 
     <Valor>: REGULARIZACI�N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor> 
    </DatoAdicional> 

しかし、我々は(それが変更されています)を取得unzipingとき:

クライアントは、このXMLを送っ

<DatoAdicional> 
    <Codigo>03</Codigo> 
    <Valor>: REGULARIZACI???N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor> 
</DatoAdicional> 

問題は、それが、サーバー桟橋内unzipedときにジップがでunzipedされている場合ので、ということです正常に解凍されたクライアントJava。私のコードjavaは:

public static List<ZipContent> getXml(DataHandler file) throws IOException { 
    ZipInputStream zis = null; 
    List<ZipContent> zipContents = new ArrayList<>(); 
    try { 
     zis = new ZipInputStream(file.getInputStream()); 
     for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) { 
      if (!ze.isDirectory()) { 
       byte[] buffer = new byte[1 << 11]; 
       ByteArrayOutputStream byteArrayOs = new ByteArrayOutputStream(); 
       int len; 
       while ((len = zis.read(buffer)) > 0) { 
        byteArrayOs.write(buffer, 0, len); 
       } 
       ZipContent zc = new ZipContent(); 
       zc.setFileName(ze.getName()); 
       zc.setXml(new String(byteArrayOs.toByteArray())); 
       zipContents.add(zc); 
      } 
      zis.closeEntry(); 
     } 
     zis.close(); 
     return zipContents; 
    } catch (IOException e) { 
     throw e; 
    } 
} 

私はしてください。

+1

桟橋がこの質問にどのように適合しているのかわかりません。あなたのサンプルコードの中には、サーブレットの仕様やjettyのものは何も使用していません。 –

+0

他のクライアントからの呼び出しがあるときにそのメソッドが解凍されるので、私はそれがJettyのためかもしれないと思います –

答えて

1

new String(byteArrayOs.toByteArray())は、システムのデフォルトエンコーディングを使用してバイト配列から文字列を作成します。 Windowsシステムでは、これは、例えば、 cp1252(ドイツ語のシステムでは、あなたの言語は異なる場合があります)。私はクラスZipContentを知っていませんが、バイトをテキストに変換する代わりに設定するか、たとえば、文字列を使用して正しい文字セットを使用します。 new String(byteArrayOs.toByteArray(), "utf8")

+0

Miアプリケーションはcentosサーバー上にあります。今、私たちが得る、私はその変更をしましたが、私はまだ同様のエラーがあります: \t \t \t \t \t \t \t \t \t \t \t \t :REGULARIZACI N DEL VALOR FACTURADO *:?DEBE SER:30.29 *:VALOR FACTURADO:30.00 * \t \t \t \t \t

+0

は、私は別の新しいのための桟橋を変更し、その問題(同じバージョン)でとてもうんざりしていた、と今Eそれは大丈夫です。それでも私はなぜその問題があるのか​​分かりません。 –

関連する問題