使用Java删除BOM字符

时间:2014-02-19 20:22:12

标签: java vi byte-order-mark

使用Java作为vi s

的等效字符串需要发生什么
:set nobomb

假设BOM来自我正在阅读的文件。

2 个答案:

答案 0 :(得分:37)

Java无法正确处理BOM。事实上,Java像处理其他所有char一样处理BOM。

发现这个:

http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html

public static final String UTF8_BOM = "\uFEFF";

private static String removeUTF8BOM(String s) {
    if (s.startsWith(UTF8_BOM)) {
        s = s.substring(1);
    }
    return s;
}

可能我会改用apache IO:

http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/input/BOMInputStream.html

答案 1 :(得分:10)

对于UTF-8,BOM为:0xEF,0xBB,0xBF