2014-07-11 33 views
0

我用行寫新文件,需要帶BOM的utf-8。在我的代碼添加BOM用最簡單的方法:在Windows和Unix中的BOM

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

而在Win7這種方法做工精細,但是當我在UNIX執行我的罐子我看「?」在序言和「utf-8沒有bom編碼」,我該如何解決它?跨平臺者優先...... 答:

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

看待完全相同的工具文件或者你使用操作系統特定的觀衆?如果操作系統特定於Unix上的查看器可能不能正確解釋該命令。 – Thomas

+0

相同的工具,Notepad ++。我在Unix上生成它,添加到檔案並在Windows中打開(我只有SCP到Unix系統) – bearhunterUA

+0

聽起來像BOM不直接寫入,但變成UTF-8編碼 –

回答

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 
+0

你可以用printStream.print(''' )? – bearhunterUA

+0

char [] c = {0xEF,0xBB,0xBF};對於(int i = 0; i <3; i ++){ printStream.print(c [i]); } 不工作 – bearhunterUA

+0

它應該只有兩個字節。 –