開發中一直沒辦法解決的乙個問題
頁面採用utf8編碼,頭部和尾部用了模板包含檔案的方法,結果頭部和尾部無端端各多出乙個約10px的空行,什麼也沒有。
原因是全部採用utf8編碼,包含檔案的時候,最後的二進位製流中包含了多次utf8 bom標記,ie不能正常解析包含多個utf8 bom 標記的頁面,直接替換成實際顯示的回車,這樣導致乙個空行,而firefox卻沒有這個問題。
故如果模板採用包含的方法包含多個utf8檔案需要用ultraedit儲存時另存為功能 選擇utf8 無bom格式儲存即可。
另外,如果中文頁面在html head標記中將title標記放在前面會導致頁面空白。
所以utf8頁面應該使用標準順序
bom頭:\xef\xbb\xbf,php4、5尚對bom無視,所以在解析前直接輸出。
對此 w3.org 標準 faq 中對此問題有乙個專門的描述:
具體如下:
在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來標記文字檔案的編碼方式的作業系統: windowsxp professional , 預設字符集:中文
1) notepad : 可以自動識別出沒有帶 bom 的 utf-8 編碼格式檔案,但不可以控制儲存檔案時是否新增 bom , 如果儲存檔案,那麼會統一新增 bom 。
2)editplus : 不能自動識別出沒有 bom 的 utf-8 編碼格式檔案,檔案儲存時,選擇utf-8 格式,不會在檔案頭寫上 bom header.
3) ultraedit : 對於字元編碼的功能最為強大, 可以自動識別帶 bom 和不帶 bom 的 utf-8 檔案 (可以配置) ; 儲存的時候可以通過配置選擇是否新增 bom.
(特別需要注意的是,儲存乙個新建立的檔案時,需要選擇另存為 utf-8 no bom 格式)
推薦大家使用ultraedit或它的全能版。
本文**
朱志兵
PHP網頁UTF8編碼開發中空白的問題
開發中一直沒辦法解決的乙個問題 頁面採用utf8編碼,頭部和尾部用了模板包含檔案的方法,結果頭部和尾部無端端各多出乙個約10px的空行,什麼也沒有。原因是全部採用utf8編碼,包含檔案的時候,最後的二進位製流中包含了多次utf8 bom標記,ie不能正常解析包含多個utf8 bom 標記的頁面,直接...
網頁utf 8亂碼 utf8亂碼
複製 在前 在windows作業系統上使用ie作為瀏覽器時。常常會發生這樣的問題 在瀏覽使用utf 8編碼的網頁時,瀏覽器無法自動偵測 即沒有設定 自動選擇 編碼格式時 該頁面所用的編碼。即使網頁已經宣告過編碼格式 由此造成某些含有中文utf 8編碼的頁面產生空白輸出。由於utf 8為3個位元組表示...
《轉》亂碼UTF8和UTF 8網頁編碼
曾經被字符集間複雜的轉換搞怕了,正好新專案要求國際化,需要能夠顯示多種語言,於是一開始就規定統統使用 utf 8 編碼。所有 檔案使用 utf 8 編碼存檔 mysql資料庫所有表,所有字段設定 collation 中文翻譯為 整理 屬性為 utf8 general ci 所有頁面輸出 即便是這樣,...