1. 程式人生 > >關於Encode in UTF-8 without BOM

關於Encode in UTF-8 without BOM

什麽 nic 代碼 網頁代碼 使用 python 文件頭部 環境 解釋

定義
BOM(Byte Order Mark),字節順序標記,出現在文本文件頭部,Unicode編碼標準中用於標識文件是采用哪種格式的編碼。它的編碼是FEFF。

說明

在 UTF-8 文件中放置 BOM 主要是微軟的習慣

UTF-8 不需要 BOM,盡管 Unicode 標準允許在 UTF-8 中使用 BOM。但不含 BOM 的 UTF-8 才是標準形式。UTF-8 的網頁代碼不應使用 BOM,否則常常會出錯。

為什麽BOM不受歡迎

主要問題出在UNIX那個所有腳本語言通行的首行#!標示,這東西依賴於shell解析,而很多shell出於兼容的考慮不檢測BOM,所以加進BOM時shell會把它解釋為某個普通字符輸入導致解釋失敗。其實很多現代腳本語言,比如Python,其解釋器本身都是能處理BOM的,但是shell卡在這裏,沒辦法,只能躺著也中槍。說起來這也不能怪shell,因為BOM本身違反了一個UNIX設計的常見原則,就是文檔中存在的數據必須可見。BOM不能作為可見字符被文本編輯器編輯,就這一條很多UNIX開發者就不滿意。

Windows 記事本有個毛病就是在 UTF-8 文件開頭加 BOM,所以在windows環境下千萬不要用記事本來編輯UTF-8文件。

解決辦法:可以用NotePad++ 或者 其它文本編輯軟件轉儲為UTF-8 without BOM 格式

關於Encode in UTF-8 without BOM