天天看點

轉為utf8編碼的正确姿勢

最近發現項目裡面有的檔案eclipse打開為亂碼,顯然這是由于有的同僚不小心把GBK編碼的檔案送出到SVN。

強迫症發作,全部改為utf-8,使用的工具是Notepad++。結果是悲劇,送出代碼之後,部署時編譯報錯,整整

停了2個小時測試環境才恢複。雖然是極其簡單的事,我覺得還是有必要記錄下來,希望大家不要掉入同一個坑。

項目請用utf8編碼

項目請用utf8編碼,項目請用utf8編碼,項目請用utf8編碼,重要的事情說三遍。IDE設定預設的編碼為utf8。所有的開發人員都要遵守。這樣,就避免了坑。

轉為utf8編碼的正确姿勢

萬一有需要轉為utf8,如下步驟:

1. 請使用Notepad++打開檔案

2. 選擇“格式”菜單 -> 選擇“轉為 UTF-8 無 BOM 編碼格式”

3. 儲存檔案

轉為utf8編碼的正确姿勢

筆者在開始在步驟2選擇的是“轉為 UTF-8 編碼格式”,引發悲劇。

BOM到底是什麼鬼?

BOM全稱Byte order mark,就是指定byte的編排順序。byte編排有先大,先小兩個類型。

BOM放在文本檔案的開頭。BOM有以下三個作用:

  1. 指定byte的編排順序。
  2. 說明文本是unicode字元集。
  3. 具體指明是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