Mod*_*ire 5 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);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我不能保证任何 UTF-8 字符不会被分割成两个块。运行我的代码的结果是某些行以“?”结尾,这会损坏我的输入。
解决这个问题的好方法是什么?
如果我理解正确的话,您有一个很大的文本,用 UTF-8 编码,然后分割成 1 KB 的文件。现在您想要读回文本,但您担心编码字符可能会跨文件边界分割,并导致 UTF-8 解码错误。
该 API 有点陈旧,但有一个可以从一系列子流中SequenceInputStream
创建看似单个的内容。InputStream
使用实例集合创建其中一个实例FileInputStream
,然后创建一个实例InputStreamReader
,将 UTF-8 字节流解码为应用程序的文本。