我正在通过 FileReader 读取文件 - 该文件是 UTF-8 解码的(带有 BOM)现在我的问题是:我读取文件并输出一个字符串,但遗憾的是 BOM 标记也被输出了。为什么会出现这种情况?
fr = new FileReader(file);
br = new BufferedReader(fr);
String tmp = null;
while ((tmp = br.readLine()) != null) {
String text;
text = new String(tmp.getBytes(), "UTF-8");
content += text + System.getProperty("line.separator");
}
第一行后输出
?<style>
原文由 onigunn 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Java 中,您必须手动使用 UTF8 BOM(如果存在)。此行为记录在 Java 错误数据库中, 此处 和 此处。目前没有修复,因为它会破坏现有工具,如 JavaDoc 或 XML 解析器。 Apache IO Commons 提供了一个
BOMInputStream
来处理这种情况。看看这个解决方案: Handle UTF8 file with BOM