我有解码邮件中所有附件的代码:
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;1 D ̄2'°l'Χ¥¡¢@²Ü¿À†XØ&Ò›ÌG~€Épõ·
变换后的 PDF: H d ;1 D 2' l'Χ @ X &ʛ G~ p
有没有办法在编码-解码时不损坏内容?
PDF文件是二进制文件;它们尤其可以包含任意字节序列。
将二进制数据强制为字符串:
return new String(...);
根据该转换中给定或假设的编码,这会损坏二进制 PDF 数据,甚至可能无法修复。
因此,请将二进制附件作为二进制文件处理,例如作为byte[]
或ByteBuffer
。