ran*_*ion 4 java byte-order-mark filereader
我正在尝试使用 FileReader 读取文件并将它们写入一个单独的文件。
这些文件是 UTF-8 编码的,但不幸的是,其中一些文件仍然包含 BOM。
我试过的相关代码是这样的:
private final String UTF8_BOM = "\uFEFF";
private String removeUTF8BOM(String s)
{
if (s.startsWith(UTF8_BOM))
{
s=s.replace(UTF8_BOM, "");
}
return s;
}
line=removeUTF8BOM(line);
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,BOM 没有被删除。有没有其他方法可以用 FileReader 做到这一点?我知道 BOMInputStream 应该可以工作,但我更愿意使用 FileReader 找到解决方案。
FileReader 类是一个旧的实用程序类,它使用平台编码。在 Windows 上可能不是UTF-8。
最好与其他班级一起阅读。
作为娱乐,并澄清错误,这里有一个肮脏的黑客,适用于具有单字节编码的平台:
private final String UTF8_BOM = new String("\uFEFF".getBytes(StandardCharsets.UTF_8));
Run Code Online (Sandbox Code Playgroud)
这将获取 UTF-8 字节并在当前平台编码中生成一个字符串。
不用说 FileReader 是不可移植的,只处理本地文件。
| 归档时间: |
|
| 查看次数: |
8455 次 |
| 最近记录: |