问题:
我页面编码开始是gb2312的,后来换成了utf-8,结果用IETester测试,打开ie6,7,8页面是一片空白,但查看源文件又是完整的。在ie6和firefox下都正常,但是在ie7下偶尔会出现这样的情况。
在网上找了找,发现问题原因及解决方法如下:
解决:
<title>页面</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
交换一下顺序
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>木油的春天</title>
原因:
为什么会出现这样的问题呢?这是由于解析网页编码时以html内的标签优先,而后才是http header内的讯息,而mozilla系列的浏览器则刚刚相反。
由于utf-8编码的页面为3个字节表示一个汉字,而普通的gb2313或big5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,把utf-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的"<"结合成一个乱码字,导致无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个页面全部已经输出了。
因此最简单的解决办法是在网页文件的<head></head>标签中一定要把字符定义<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />放在<title></title>之前。