我有一个问题解压缩xml签名并且它已被更改。
客户发送此XML:
<DatoAdicional>
<Codigo>03</Codigo>
<Valor>: REGULARIZACI�N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor>
</DatoAdicional>
但是当我们得到解密时(它被改变了):
<DatoAdicional>
<Codigo>03</Codigo>
<Valor>: REGULARIZACI???N DEL VALOR FACTURADO*: DEBE SER: 30.29*: VALOR FACTURADO: 30.00*</Valor>
</DatoAdicional>
问题是当它在服务器jetty中解压缩时,因为当使用客户端java解压缩该zip时,它是成功解压缩的。我的代码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;
}
}
请告诉我。
答案 0 :(得分:1)
>>> element
'Vishakhapatnam - Ankapalli [Km 2.837 to &Km; 395.870 to Km358.00(New Chainage From Km 700.544 to Km 740.255)] '
使用系统的默认编码从字节数组中创建一个String。在Windows系统上,这很可能是例如cp1252(在德国系统上,你的可能会有所不同)。我不知道类ZipContent,但您可以设置字节而不是将其转换为文本或使用正确的字符集,例如使用new String(byteArrayOs.toByteArray())