HTML5 Charset能用吗?
前一段某项目中页面在IE6溘然呈现了乱码,其时做了各类排查,最终展望是行使了HTML5的DOCTYPE和Charset以及中文注释的题目,于是姑且回收旧的Charset要领来修复了下,后头乱码再没呈现。 着实一向不太确定HTML5的Charset可否被IE6辨认,于是做了一些测试。 先说下两种Charset声明要领,着实各人应该都很认识的:
后头我们简称第一种要领为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等外部资源更要放到后头去。 测试中不免会有漏掉,假若有不正确的处所,接待指正并一路接头~~ 文章来历:前端调查 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |