文件解码后 PDF 附件损坏

PDF attachments are corrupted after file decoding

我有解码邮件中所有附件的代码:

for (String key : attachments.keySet()) { String fileContent = attachments.get(key); attachments.put(key, getEncodedPartFromAttachment(fileContent)); }

private String decodeFileContent(String encodedData) { return new String(Base64.getDecoder().decode(encodedData)); }

编码和解码回来后,我遇到了一些问题,比如:

原始 PDF:%âãÏÓ

转换后的 PDF:%����

原始PDF:H‰d;1D¯2'°l'¢@²Ü¿À†XØ&Ò›ÌG~€Épõ·

转换后的 PDF:H�d�;1D�2'��l'Γ��@��������X��&˛��G~��p��

有没有办法在编码解码时不破坏内容?

PDF文件是二进制文件;它们尤其可以包含任意字节序列。

你把二进制数据强行变成字符串:

return new String(...);

根据该转换中给出或假定的编码,这会损坏二进制 PDF 数据,甚至可能无法修复。

因此,请将二进制附件作为二进制文件处理,例如作为 byte[]ByteBuffer.