Java 文件解码后PDF附件已损坏
在这里,我有解码邮件中所有附件的代码:Java 文件解码后PDF附件已损坏,java,pdf,encoding,decoding,Java,Pdf,Encoding,Decoding,在这里,我有解码邮件中所有附件的代码: for(字符串键:attachments.keySet()){ 字符串fileContent=attachments.get(key); attachments.put(key,getEncodedPartFromAttachment(fileContent)); } 私有字符串解码文件内容(字符串编码数据){ 返回新字符串(Base64.getDecoder().decode(encodedData)); } 在编码和解码之后,我遇到了一些问题,比如:
for(字符串键:attachments.keySet()){
字符串fileContent=attachments.get(key);
attachments.put(key,getEncodedPartFromAttachment(fileContent));
}
私有字符串解码文件内容(字符串编码数据){
返回新字符串(Base64.getDecoder().decode(encodedData));
}
在编码和解码之后,我遇到了一些问题,比如:
原始PDF:
转换后的PDF:%����
原始PDF:H‰d; 1 D"2"lΧ,XØDØ›G(p)·
转换后的PDF:H�D�; 1 D�2'�Χ���@��ܿ���X�&қ�G~��P��
有没有办法在编码解码时不损坏内容?PDF文件是二进制文件;它们尤其可以包含任意字节序列 将二进制数据强制转换为字符串:
return new String(...);
根据该转换中给定或假定的编码,这会损坏二进制PDF数据,甚至可能无法修复
因此,请将二进制附件改为二进制文件,例如作为
byte[]
或作为ByteBuffer
PDF文件是二进制文件。将二进制数据强制转换为字符串:新字符串(…)
。这会损坏二进制PDF数据,这取决于所使用的编码,甚至无法修复。将二进制附件改为二进制文件,例如作为byte[]
或作为ByteBuffer
。