最近發現項目裡面有的檔案eclipse打開為亂碼,顯然這是由于有的同僚不小心把GBK編碼的檔案送出到SVN。
強迫症發作,全部改為utf-8,使用的工具是Notepad++。結果是悲劇,送出代碼之後,部署時編譯報錯,整整
停了2個小時測試環境才恢複。雖然是極其簡單的事,我覺得還是有必要記錄下來,希望大家不要掉入同一個坑。
項目請用utf8編碼
項目請用utf8編碼,項目請用utf8編碼,項目請用utf8編碼,重要的事情說三遍。IDE設定預設的編碼為utf8。所有的開發人員都要遵守。這樣,就避免了坑。
轉為utf8編碼的正确姿勢
萬一有需要轉為utf8,如下步驟:
1. 請使用Notepad++打開檔案
2. 選擇“格式”菜單 -> 選擇“轉為 UTF-8 無 BOM 編碼格式”
3. 儲存檔案

筆者在開始在步驟2選擇的是“轉為 UTF-8 編碼格式”,引發悲劇。
BOM到底是什麼鬼?
BOM全稱Byte order mark,就是指定byte的編排順序。byte編排有先大,先小兩個類型。
BOM放在文本檔案的開頭。BOM有以下三個作用:
- 指定byte的編排順序。
- 說明文本是unicode字元集。
- 具體指明是UTF-8,還是UTF-16,異或UTF-32。BOM對應的值不同。
UTF-8編碼下,BOM為0xEF0xBB0xBF,沒有什麼意義,官方不推薦使用。一個文本讀取程式如果不支援UTF-8的BOM或者讀取出來是,那麼編譯程式就挂。丢棄UTF-8的BOM就正常(eclipse貌似就是這樣)。是以UTF-8下不要用BOM,一個可能引起錯誤的存在而已。
UTF-16和UTF-32下BOM是必須有的,不太一樣,不常用,是以不扒。
參考連結
- Byte_order_mark