有關 UTF-8 BOM 導致樣式錯亂的解決方案

來源:互聯網
上載者:User
utf-8 是一種在web應用中經常使用的一種 unicode 字元的編碼方式,使用 utf-8 的好處在於它是一種變長的編碼方式,對於 ANSII 碼編碼長度為1個位元組,這樣的話在傳輸大量 ASCII 字元集的網頁時,可以大量節約網路頻寬。

utf-8 是一種在web應用中經常使用的一種 unicode 字元的編碼方式,使用 utf-8 的好處在於它是一種變長的編碼方式,對於 ANSII 碼編碼長度為1個位元組,這樣的話在傳輸大量 ASCII 字元集的網頁時,可以大量節約網路頻寬。

使用 utf-8 編碼來編寫網頁的時候, 往往會因為 bom (Byte Order Mark) 的問題,導致網頁中經常出現一些不明的空行或者亂碼字元。這些都是因為 utf-8 編碼方式對於 bom 不是強制的。因此 utf-8 編碼在儲存檔案的時候,會出現不同的處理方式。比如有的瀏覽器(FireFox)可以自動過濾掉所有 utf-8 bom , 有的 (IE) 只能過濾掉一次 bom (為什麼是一次? 當你出現 Include 多次檔案時就會碰上這個問題了)。

使用editplus或其他編輯器刪除掉檔案中的BOM簽名,重新重新整理頁面,樣式正常了。

關於BOM的說明

在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。而FFFE在UCS中是不存在的字元,所以不應該出現在實際傳輸中。UCS規範建議我們在傳輸位元組流前,先傳輸字元"ZERO WIDTH NO-BREAK SPACE"。這樣如果接收者收到FEFF,就表明這個位元組流是Big-Endian的;如果收到FFFE,就表明這個位元組流是Little-Endian的。因此字元"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB BF開頭的位元組流,就知道這是UTF-8編碼了。

Windows就是使用BOM來標記文字檔的編碼方式的

UTF-8編碼的檔案中,BOM佔三個位元組。如果用記事本把一個文字檔另存新檔UTF-8編碼方式的話,用UE開啟這個檔案,切換到十六進位編輯狀態就可以看到開頭的FFFE了。這是個標識UTF-8編碼檔案的好辦法,軟體通過BOM來識別這個檔案是否是UTF-8編碼,很多軟體還要求讀入的檔案必須帶BOM。可是,還是有很多軟體不能識別BOM。我在研究Firefox的時候就知道,在Firefox早期的版本裡,擴充是不能有BOM的,不過Firefox 1.5以後的版本已經開始支援BOM了。現在又發現,PHP也不支援BOM。

PHP在設計時沒有考慮BOM的問題,它不會忽略UTF-8編碼的檔案開頭BOM的那三個字元。由於必須在

國外的英文外掛程式和模版一般都是用的ASCII碼的編碼方式,不會有BOM,只有國內的外掛程式和模版會由於作者的不知情造成問題。

另外,修改模版時,由於輸出頁面使用UTF-8編碼,那麼修改模版的時候如果有加入中文字元的話,必須把檔案轉成UTF-8編碼才能正常顯示,這個時候如果所使用的編輯器自動加上了BOM的話,將會造成在頁面上輸出這三個字元,顯示效果就要看瀏覽器了,一般是一個空行或是一個亂碼。您可能感興趣的文章:php執行個體:檢測並清除檔案開頭的BOM資訊Php批量去除bom頭資訊的實現代碼php去掉bom頭的代碼分享PHP 過濾頁面中的BOM資料的簡單一實例檢測php檔案是否有bom頭的代碼批量清除php檔案中bom的方法檢查並清除php檔案中bom的函數BOM與DOM的區別分析有關UTF-8 編碼中BOM的檢測與刪除

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.