我用行编写新文件,需要带有 BOM 的 utf-8。在我的代码中,我用最简单的方式添加BOM:
printStream.print('\ufeff');
// print lines
在 Win7 中,这个方法工作得很好,但是当我在 Unix 中执行我的 jar 时,我看到“?”在 prolog 和“没有 bom 编码的 utf-8”处,我该如何修复它?跨平台首选... 答案:
char[] c = {0xEF, 0xBB, 0xBF};
for(int i=0; i<3; i++){
printStream.write(c[i]);
}
最佳答案
我不确定 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
关于java - Windows 和 Unix 中的 BOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24696402/