IE浏览器打开明明有内容的网页却显示空白页问题
在做一些以UTF-8为编码的网站时,有时候用IE浏览器打开这个网站会显示一个空白页面,其余的就什么也没有了,但是在查看网站源文件时你会发现,网站代码已经全部载入了,只是没有在前台显示出来而已,即便是你已经在网站代码中用“<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />”声明了编码格式,这种问题有时也会出现,造成这种问题的的原因就是编码问题造成的,既然有这些问题的存在我们在制作网站时为什么还要用UTF-8编码呢?下面部落就从UTF-8编码的起源开始讲起,在最后再给出解决这个问题的方法。
什么是UTF-8编码
UTF8 是(UNICODE八位交换格式)的简称,UNICODE是国际标准,也是ISO标准10646的等价标准。UNICODE编码的文件中可以同时对几乎所有地球上已知的文字字符进行书写和表示,而且已经是UNIX/LINUX世界的默认编码标准。
UTF-8是世界通用的语言编码,UTF-8的推广要归功于Google的应用,以及Blog开发者。而如果用Windows XP英文版的IE6.0浏览gb2312语言编码的网页,则会提示是否安装语言包。因此,可能会失去很多的国外浏览者。
UTF-8编码的好处
网页使用UTF-8编码的好处是,无论您的操作系统的使用语言是简体中文(GB2312字符集)、繁体中文(BIG5字符集)或者是朝鲜文、日文、法文、德文、俄文、阿拉伯文、希伯来文、西班牙文、葡萄牙文等各种语言文字,您在使用这些语言文字,都可以正常显示在网页中,其它任何人浏览时都会正常显示,不会有乱码,不会有重码和字符冲突,不需要调整页面的语言编码设置即可正常浏览,多种语言字符可以同时共存在页面上,所以为了网站的通用性起见,用UTF8编码是更好的选择。
IE打开UTF-8编码网站显示空白页问题解决
由于UTF-8为3个字节表示一个汉子,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title> </title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个页面全部已经输出了。
其实解决这个问题的方法有很多,但是最简单的办法是:
只要将“<meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″ />”这段编码声明放到<title></title>之前就可以了。
下面我们以一个表格的形式来说明一下不同编码在IE6和火狐浏览器中显示形式:
编码 IE6 Firefox火狐 GBK 正常 正常 UTF-8(no BOM) 空白页 使用GBK解码形成乱码 UTF-8(BOM) 正常 正常 GBK 使用UTF-8解码形成乱码 使用UTF-8解码形成乱码 UTF-8(no BOM) 正常 正常 UTF-8(BOM) 正常 正常 GBK 使用UTF-8解码形成乱码 使用UTF-8解码形成乱码 UTF-8(no BOM) 空白页 正常 UTF-8(BOM) 正常 正常
实际上的情况应该是
在用IE浏览的情况下UTF-8编码的php页面在title为中文时会显示为空白页
解决方法
加上这个就好了
<?php
header("Content-Type: text/html; charset=utf-8");
?>