2023-08-21 分類: 網站建設
百度權重查詢 站長交易 友情鏈接交換 網站監控 服務器監控 seo監控
前一段某項目中頁面在IE6倏忽出現了亂碼,當時做了各種排查,好終推斷是使用了HTML5的DOCTYPE和Charset以及中文注釋的問題,于是一時采用舊的Charset方法來修復了下,后面亂碼再沒出現。
其實一向不太確定HTML5的Charset能否被IE6識別,于是做了一些測試。
先說下兩種Charset聲明方法,其實大家應該都很熟悉的:
<meta charset=“UTF-8”><!--HTML5方法-->
<meta http-equiv=“content-type” content=“text/html; charset=UTF-8”><!--HTML4及XHTML方法-->
后面我們簡稱種方法為HTML5方法,第二種方法為HTML4方法。
測試環境:
Windows XP Sp2,中文版+英文版兩個版本的IE6,及Windows 7 下IE9及其各種兼容模式和Chrome、Firefox等的當前Stable版本;
因為我們用到的HTML文件都是UTF8編碼的,所以這里測試用例的HTML文件也都是UTF8(無BOM)格式,項目用gbk或者gb2312編碼的類似。
測試用了兩種方法:
meta方法:包括HTML5和HTML4兩種方法及其混搭
服務器端方法:服務器端設置charset,這里使用nginx,charset=utf-8
測試用例——Meta方法:
UTF8
UTF8 HTML4方法
UTF8-GB2312
UTF8+中文注釋在meta前
UTF8+中文注釋在HTML和HEAD之間
GB2312
GB2312 HTML4方法
GB2312-UTF8
GB2312+中文注釋在meta前
GB2312+中文注釋在HTML和HEAD之間
測試用例——服務器方法:
服務器設置編碼
meta編碼和服務器編碼不一致
上面各用例均可直接訪問
測試效果:
測試個用例在各瀏覽器中體現一致;
UTF-8的方案中,悉數正常顯示;
charset聲明為gb2312,因為和文檔的UTF-8編碼不符,所以悉數亂碼;
1,6用HTML5 charset分別定義了UTF8和gb2312,1正常顯示沒有亂碼,6亂碼——在中文版IE6和英文版IE6均如此,說明IE6能識別HTML5的charset;
1,2用例和6,7用例,分別用單獨用HTML5和HTML4方法定義charset,效果一樣;
值得注重的是,第三個用例先用HTML5的方法設定UTF-8編碼,再用HTML4的編碼設定為gb2312,但頁面顯示正常,而第八個用例反之,效果頁面顯示亂碼,所以可以推斷,第二個meta標簽并沒有生效;
4、5用例并沒有亂碼,說明單純的HTML注釋并不一定會導致亂碼,這里沒有測試這兩個位置加載不同編碼的js等外部文件時可能發生的情況;
服務器方法中,用例1并沒有效meta設置charset,頁面顯示正常,而用例2中用meta設置charset=gb2312,與服務器版本不同,但依然沒有亂碼,說明服務器端返回的charset優先級更高;
結論:
其實關于charset的規范,Google的開發文檔中也有詮釋:
要在HEAD標簽中;
在任何其它內容之前,也就是要在HEAD中的好前面;
包括空格和DOCTYPE聲明在內,要在前512個字節之內;
HTML5和HTML4兩種寫法效果一樣,用其中之一即可;
上面的測試也證實,第4條是準確的,兩種寫法均可。
另外,服務器端設置charset也是很不錯的做法,charset聲明直接在HTTP response中獲得,效率更高,而且更方便。Google目前在用這種方法。
所以只要頁面寫的規范,并不會出現亂碼的問題。所以可以勇敢的使用HTML5的DOCTYPE和Charset聲明。但是請盡量按照上面說的Google文檔中的規范來,頭部不要放太多東西,js等外部資源更要放到后面去。
測試中難免會有遺漏,假如有不準確的地方,迎接指正并一路討論~~
文章來源:前端觀察
名稱欄目:HTML5Charset能用嗎?
鏈接地址:http://m.newbst.com/news20/277470.html
成都網站建設公司_創新互聯,為您提供小程序開發、網站設計、網站改版、網站收錄、用戶體驗、網站策劃
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯
猜你還喜歡下面的內容