【发布时间】:2013-11-08 17:31:59
【问题描述】:
我收到了一个 XML 文件,其中包含一个 PDF 附件,编码为 Base64 字符串。我正在尝试从中生成一个PDF 文件。以下代码运行良好:
String base64encodedPdf =" .... ";
byte[] imgBytes = javax.xml.bind.DatatypeConverter.parseBase64Binary(base64encodedPdf);
IOUtils.write(imgBytes, new FileOutputStream("C:\\\\test.pdf"));
当附件数据太大而无法直接复制到编辑器时会出现问题,我想我可以将其复制到文本文件并读取文件并转换为String。我就是这样做的:
org.apache.commons.io.FileUtils.readFileToString(file, encoding)
我很好奇我应该指定什么编码...UTF-8、UTF-16 和为什么?
编辑:
这是我可以使用的元信息
<AttachmentType tc="1">Document</AttachmentType>
<MimeType>application/pdf</MimeType>
<TransferEncodingTypeString>Base64</TransferEncodingTypeString>
<TransferEncodingTypeTC tc="4">Base64</TransferEncodingTypeTC>
【问题讨论】:
-
那么文本存储在什么编码中?我们不可能知道 - 希望你知道......
-
这是一个好问题....我补充说我有哪些元信息可用
-
Base64 用于编码“二进制”数据。因此,当您对其进行解码并将文件写入磁盘时,您想要写入确切的二进制结果,而不是某些字符编码。这不是字符数据。
-
@HotLicks 抱歉没有关注你。你建议什么改变
-
请参阅this question,了解如何确定您的 XML 文档的编码方式。它很可能是 UTF-8,但也可能是其他的,具体取决于 BOM 和 XML 序言。跨度>
标签: java file-io apache-commons