【发布时间】:2016-01-18 00:13:14
【问题描述】:
我有一个大的 UTF-8 输入,它被分成 1-kB 大小的块。我需要使用接受字符串的方法来处理它。比如:
for (File file: inputs) {
byte[] b = FileUtils.readFileToByteArray(file);
String str = new String(b, "UTF-8");
processor.process(str);
}
我的问题是我不能保证任何 UTF-8 字符都不会在两个块之间分割。运行我的代码的结果是某些行以“?”结尾,这会破坏我的输入。
什么是解决这个问题的好方法?
【问题讨论】:
-
您的代码看起来正确。您确定输入没有损坏吗? IE。这些文件是否包含有效的“UTF-8”?另一件事,如果您在 Windows 上运行,有时 UTF-8 编码的文件在文件开头有一个神奇的字节序列,这只是二进制数据,在传递给
String构造函数时必须跳过。跨度>
标签: java utf-8 character-encoding