java - Windows 和 Unix 中的 BOM

标签 java byte-order-mark

我用行编写新文件,需要带有 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/

相关文章:

php - "session_regenerate_id(): Cannot regenerate session id - headers already sent"如何解决

安卓 JSONException : JSONArray must start with [ - and it does

java - UTF-16LE 编码和 xerces2 Java

java - SWT java.lang.IllegalArgumentException : Argument cannot be null

java - richfaces suggestionBox 将附加值传递给支持 bean

php - 如何在 PHP 中输​​出 Excel 可以正确读取的 UTF-8 CSV?

PHP:如何将带 BOM 的 UTF-8 文本/纯文本内容输出以供下载?

java - OkHttp 的 .string() 和 .toString() 有什么区别?

java - 构建 A* 算法的问题

java - Android 手机无法连接到 eclipse