0

我收到了一个 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>
4

1 回答 1

0

这取决于您在写入文本文件时使用的编码。Java 文本相关的 IO 类(例如 PrintWriter)有一个构造函数,允许您显式定义编码,例如:

new PrintWriter("foo.txt", "UTF-8");

如果您不这样做,它将使用可能因平台/JVM 设置而异的默认编码。您使用检查平台的默认编码

Charset.defaultCharset()

但是在写入文件时始终明确指定您的预期编码是一个好习惯

于 2013-12-04T05:24:54.070 回答