Windows和Unix中的BOM

时间:2014-07-11 11:15:21

标签: java byte-order-mark

我用行编写新文件,需要带有BOM的utf-8。在我的代码中,我以最简单的方式添加BOM:

printStream.print('\ufeff');
// print lines

在Win7中,这种方法运行正常,但是当我在Unix中执行我的jar时,我看到"?"在prolog和" utf-8没有bom编码",我该如何解决?跨平台首选...... 解答:

char[] c = {0xEF, 0xBB, 0xBF};
        for(int i=0; i<3; i++){
            printStream.write(c[i]);
        }

1 个答案:

答案 0 :(得分:2)

我不确定printStream.print('\ufeff');是写utf-8 bom的正确方法。您可以尝试直接写入EF BB BF字节。

示例:

char[] bom = { 0xEF, 0xBB, 0xBF }; 
//or byte[] bom= { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF };
printStream.write( bom ); //directly write the bytes