如何将UTF-8字节块转换为字符?

时间:2016-01-18 00:13:14

标签: java utf-8 character-encoding

我有一个大的UTF-8输入,被分成1 kB大小的块。我需要使用接受String的方法来处理它。类似的东西:

for (File file: inputs) {
     byte[] b = FileUtils.readFileToByteArray(file);
     String str = new String(b, "UTF-8");
     processor.process(str);
}

我的问题是我无法保证任何UTF-8字符不会在两个块之间分割。运行我的代码的结果是某些行以'?'结尾,这会破坏我的输入。

解决这个问题的好方法是什么?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你有一个大文本,用UTF-8编码,然后分成1千字节的文件。现在您想要读回文本,但是您担心编码字符可能会跨文件边界分割,并导致UTF-8解码错误。

API有点尘土飞扬,但有一个SequenceInputStream会从一系列子流中创建一个似乎是function add() { window.scrollTo(0, positionYTop += speed); if (window.scrollTop < 400) { timer(); } } 的内容。使用InputStream个实例的集合创建其中一个,然后创建一个FileInputStream,将UTF-8字节流解码为应用程序的文本。