读UTF-8 - BOM标记我正在通过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>
3 回答
料青山看我应如是
TA贡献1772条经验 获得超8个赞
在Java中,您必须手动使用UTF8 BOM(如果存在)。Java bug数据库中记录了此行为,此处和此处。暂时没有解决方法,因为它会破坏JavaDoc或XML解析器等现有工具。在Apache的IO共享提供了一个BOMInputStream
处理这种情况。
看看这个解决方案:处理带有BOM的UTF8文件
慕妹3146593
TA贡献1820条经验 获得超9个赞
类: org.apache.commons.io.input.BOMInputStream
用法示例:
String defaultEncoding = "UTF-8";InputStream inputStream = new FileInputStream(someFileWithPossibleUtf8Bom);try { BOMInputStream bOMInputStream = new BOMInputStream(inputStream); ByteOrderMark bom = bOMInputStream.getBOM(); String charsetName = bom == null ? defaultEncoding : bom.getCharsetName(); InputStreamReader reader = new InputStreamReader(new BufferedInputStream(bOMInputStream), charsetName); //use reader} finally { inputStream.close();}
添加回答
举报
0/150
提交
取消