【发布时间】:2015-08-01 11:10:17
【问题描述】:
给定一个 UTF-8 编码的字节数组(base64 decoding of a String 的结果) - 请问将它写入 UTF-8 编码文件的正确方法是什么?
下面的源码(逐字节写数组)是否正确?
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(tmpFile), Charset.forName("UTF-8"));
for (byte b: buffer)
osw.write(b);
osw.close();
【问题讨论】:
-
如果您已经有一个字节缓冲区,则不需要编写器。 writer 用于编写字符或字符串。
-
根据您对以下答案的评论,您确定您的数组采用 UTF-8 编码吗?只有以 base64 编码的原始数据本身是 UTF-8 时才会如此。你的 base64 编码的输入是什么?
-
一些用Base64.encode编码的对象...(我知道这是一个愚蠢的答案,但源代码很大,有2500个Java文件)
-
那是
Base64的代码,但是用它编码了什么?你确定它们是字符串吗?它们是 Java 字符串吗?它们是从字符串转换而来的字节数组吗?如果您不知道实际的对象是什么,则很难打印它们,因为您甚至都不知道它们是字符串。您可以在 base64 中编码任何内容,包括图像和声音。