如果你有byte[]
一个或一个InputStream
(两个二进制数据),你可以得到一个String
或一个Reader
(两个文本):
final String encoding = "UTF-8"; // "UTF16LE" or "UTF-16BE"
byte[] b = ...;
String s = new String(b, encoding);
InputStream is = ...;
BufferedReader reader = new BufferedReader(new InputStreamReader(is, encoding));
for (;;) {
String line = reader.readLine();
}
反向过程使用:
byte[] b = s.geBytes(encoding);
OutputStream os = ...;
BufferedWriter writer = new BufferedWriter(new OuputStreamWriter(os, encoding));
writer.println(s);
Unicode 是所有字符的编号系统。UTF 变体将 Unicode 实现为字节。
你的问题:
在正常方式(网络服务)中,您已经收到了一个String
. 例如,您可以使用上面的 Writer 将该字符串写入文件。要么使用完整的 Unicode 字体自行检查,要么将文件传递给检查。
您需要 (?) 检查文本所在的 UTF 变体。对于亚洲文字,UTF-16(小端或大端)是最佳选择。在 XML 中,它已经被定义了。
添加:
FileWriter使用默认编码(来自您机器上的操作系统)写入文件。而是使用:
new OutputStreamWriter(new FileOutputStream(new File("...")), "UTF-8")
如果它是二进制 PDF,正如@bobince 所说,只在 byte[] 或 InputStream 上使用 FileOutputStream。