首页 > Java > java教程 > Java读取UTF-8文件时如何保留BOM?

Java读取UTF-8文件时如何保留BOM?

Mary-Kate Olsen
发布: 2024-11-24 15:44:15
原创
712 人浏览过

How to Retain the BOM When Reading UTF-8 Files in Java?

使用 BOM 标记读取 UTF-8:了解意外的 BOM 输出

以字节顺序读取 UTF-8 编码的文件时标记(BOM),有可能会遇到输出字符串中包含BOM。发生这种情况是因为 BOM(Unicode 标识符)作为特定字节序列存储在文件的开头。

在给定的 Java 代码中,适当地利用 FileReader 和 BufferedReader 来处理 UTF-8 文件读取。但是,问题出现在后续行中:

text = new String(tmp.getBytes(), "UTF-8");
登录后复制

此行尝试使用 UTF-8 字符集对 tmp 字符串中存储的字节进行解码。但是,String 上的 getBytes() 方法不会保留原始文件中的 BOM 标记。因此,解码过程会忽略 BOM,并且它实际上会丢失。

要在输出字符串中保留 BOM 标记,需要对代码进行轻微调整:

byte[] bytes = tmp.getBytes("UTF-8");
if (isUTF8WithBOM(bytes)) {
    text = new String(bytes, 3, bytes.length - 3);
} else {
    text = new String(bytes, "UTF-8");
}
登录后复制

isUTF8WithBOM 方法检查字节数组是否以 UTF-8 BOM 序列(0xEF、0xBB、0xBF)开头。如果为 true,则通过从第三个字节开始对字节数组进行切片来删除 BOM。这可确保后续解码过程在输出字符串中包含 BOM 标记。

以上是Java读取UTF-8文件时如何保留BOM?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板