靠谱的软件下载站
当前位置:  IEfans/IE专区/IE相关/IE中打开UTF-8编码的网页中title显示空白页的问题

IE中打开UTF-8编码的网页中title显示空白页的问题

IE相关 互联网 2009-08-10 阅读(4270)
当在ie浏览器下面浏览网页面的时候使用 utf-8 编码,标签被放在<meta>标签前面。当title为中文的时(比如Blog名为中文或者文章标题为中文),在IE下会出现显示空白页的问题。而使用gbk或者gb2312等编码就不会有什么问题了。<!--more--> 由于 utf-8 使用3个字节表示一个汉字,而GB2312或BIG5使用两个字节。页面输出时,由于上述原因,使浏览器解析、输出<title> 的内容时,如果在前有奇数个全角字符时,IE把 UTF-8 当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和的<结合成一个乱码字,导致IE无法读完< title>部分,致使整个页面为空百输出。此时查看源文件,会发现实际上整个页面全部已经下载了。 而浏览器解析html的方式是:浏览器读取了页面的html代码后开始进行解析。解析前浏览器要先知道页面的编码方式,然后根据编码方式进行解码,然后才能开始解析。 浏览器可以从下面3个方面得到页面编码方式: HTTP Header中的”Content-Type”项; 返回的html代码开头是否有BOM(Byte order Mark); html代码中的meta标签。 浏览器(无论是IE还是Firefox)在解析页面时,首先取HTTP Header中的Content-Type项,如果有写明charset的话就认定页面的编码方式为charset指定的值。如果没有指明,则认定为默认 值。根据上表,IE中文版的默认值是GB2312,Firefox中文版的默认值是GBK,不过IE的GB2312好像和GBK没啥区别。然后,浏览器会 看一下有没有BOM。一旦发现有UTF-8的3字节BOM,则重新认定页面的编码方式为UTF-8。 解码阶段,解码完成后是解析html的阶段。解析html的过程中,当解析到head部分的meta标签时,浏览器会根据这个语句中的说明,重新认定编码方式为charset后面的方式,中断html解析过程,返回到解码步骤重新解码。 GBK 和 UTF-8 的编码范围: GBK的编码范围是0×8140-0xfefe。从GB2312-80开始,因为ASCII码的范围是0~127,首字位是0,所以 GB2312-80使用双字节,并设置首字位为1。“GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间。” UTF-8中中文都是3个字节的,由于Unicode中中日韩的文字都混在一起,可以使用Windows自带的字符映射表查看CJK表意字符 的范围,即为汉字的范围。3字节的UTF-8编码是:1110xxxx 10xxxxxx 10xxxxxx,编码范围是8000-EFFF,首字节在80-EF之间,尾字节在00-FF之间。 显然当一段UTF-8编码的文本被按照GBK方式解码的时候,由于有一些编码在GBK中不存在,造成解码程序出现错误。当UTF-8文本被按照GBK的方 式解码的时候,前两个字节会被认为是一个字,后一个字节将和下一个字符结合。当标签里的汉字数是偶数个时,勉强有3/4的概率 通过解码程序(因为GBK的第二个字节要求是40-FE),当有奇数个汉字的时候,最后一个汉字的三个字节的最后一个字节会和< /title>的第一个字符<结合,而<的编码是3C,正好不在尾字节40-FE的范围中,造成错误。如果< /title>标签前有多余的空格也会产生错误,因为空格的编码20也不在范围中。 meta 标签的作用:详细请看 《HTML中meta的作用》 “meta是用来在HTML文档中模拟HTTP协议的响应头报文。”在meta标签中写和在HTTP头里写是一样的,这也是为了解决用普通 HTML写网页的人无法自行定义HTTP头的问题。但是,meta是一个html标签,所以必须进入到html解析的步骤才能生效,而生效后,浏览器会退 回几步,重新设置好HTTP头从头再开始解码、解析html。所以meta中写的内容会覆盖HTTP头里的内容,无论哪个浏览器都是这样的。 出现空白页必须的3项条件: 1.title标签里的内容为中文其他双字节字符; 2.指定网页编码的 meta 信息在 title 标签的下方; 3.另存或转换utf-8编码时没有包括 unicode 签名。 BOM (Byte order Mark,字节序标识)的作用: 用于UTF-16编码的文件,在UTF-8编码的文件中不需要标识字节序,所以被用来标识这是一个UTF-8编码文件。 这个问题还是IE的兼容性问题,在解码的时候如果遇到错误的编码就中断解码。 这个是IE的bug,不过也不要认为你用的是MyIE、MyIE2、遨游Maxthon、GreenBrowser、腾讯TT就不会受到影响。Firefox或者Opera就更不会了。<p class="tags"><font>标签:</font><a href="/search/q/?keyword=IE%E7%9B%B8%E5%85%B3">IE相关</a><a href="/search/q/?keyword=ie%E7%BD%91%E9%A1%B5">ie网页</a><a href="/search/q/?keyword=UTF-8">UTF-8</a><a href="/search/q/?keyword=title">title</a></p> </div> <script type="text/javascript">$(function(){ format_content(); });</script> <div class="about_soft mt10 mf10"> <div class="tit10"><span>相关软件</span></div> <ul class="acc"> <li><a href="/soft/10441.html" target="_blank"><img src="//img.iefans.net/2017/0801/m_01143611222827.png" alt="泡美丽官方版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>泡美丽官方版</b></a></li> <li><a href="/soft/9275.html" target="_blank"><img src="//img.iefans.net/2017/0707/m_07173120504653.png" alt="百度云记事本安卓版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>百度云记事本安卓版</b></a></li> <li><a href="/soft/3617.html" target="_blank"><img src="//img.iefans.net/2017-03-10-09-34-57/6.png" alt="高铁管家官网版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>高铁管家官网版</b></a></li> <li><a href="/soft/1017.html" target="_blank"><img src="//img.iefans.net/2016-09-29-10-47-55/1.png" alt="今目标电脑版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>今目标电脑版</b></a></li> <li><a href="/soft/1327.html" target="_blank"><img src="//img.iefans.net/2016-11-25-04-41-44/1.png" alt="嗨音官方版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>嗨音官方版</b></a></li> <li><a href="/soft/14211.html" target="_blank"><img src="//img.iefans.net/2017/1018/m_18105826891894.png" alt="简理财安卓版" onerror="this.src='//img.iefans.net/default/err_112x112.jpg';" /><b>简理财安卓版</b></a></li> </ul> </div> </div> <div class="w230 right"> <div class="related_read mt10"> <div class="tit11"><span>相关文章</span></div> <ul class="acc"> <li><a href="/Win7chongzhuanghouruheshanchuieliulanqcuowuzhengshu/" title="Win7重装后如何删除IE浏览器错误证书">Win7重装后如何删除IE浏览器错误证书</a></li> <li><a href="/weiruanxuanbuedgeheie11buzaizhichiRC4/" title="RC4流密码安全堪忧微软宣布Edge和IE11不再支持">RC4流密码安全堪忧微软宣布Edge和IE11不再支持</a></li> <li><a href="/Edgeliulanqitianjiachajianguandengchulu/" title="Edge浏览器添加插件“关灯”出炉">Edge浏览器添加插件“关灯”出炉</a></li> <li><a href="/Win10xitongedgeliulanqianzhuangchajianbuzhou/" title="Win10系统Edge浏览器安装插件的步骤">Win10系统Edge浏览器安装插件的步骤</a></li> <li><a href="/Win10xitongxianshiqiyanseyichangruhejiaozheng/" title="Win10系统显示器颜色异常如何校正">Win10系统显示器颜色异常如何校正</a></li> <li><a href="/WP81shengjidaoWin10yidongbanjiangxiaoshidegongneng/" title="WP8.1升级到Win10移动版将消失哪些功能">WP8.1升级到Win10移动版将消失哪些功能</a></li> <li><a href="/yongWin10EdgeliulanqifangwenGoogleshouyeweijiuban/" title="用Win10Edge浏览器访问Google首页为旧版">用Win10Edge浏览器访问Google首页为旧版</a></li> <li><a href="/Win10EdgeliulanqikuozhanzaiChromeshangyunxing/" title="Win10Edge浏览器扩展可在Chrome上运行">Win10Edge浏览器扩展可在Chrome上运行</a></li> <li><a href="/win7xitongzhongie11liulanqiruhejiangjidaoie8/" title="win7系统中IE11浏览器如何降级到IE8浏览器">win7系统中IE11浏览器如何降级到IE8浏览器</a></li> <li><a href="/Windows7xitongxiezaiie10sanbuqu/" title="Windows7系统卸载IE10三步曲">Windows7系统卸载IE10三步曲</a></li> </ul> </div> <div class="hot_read mt10"> <div class="tit11"><span>热门文章</span></div> <ul class="acc"> <li><a href="/a/297.html" title="IE10中文版官方下载win7 64位/32位">IE10中文版官方下载win7 64位/32位</a></li> <li><a href="/a/344.html" title="win7电脑ie11降级ie10 ie9 ie8方法详解">win7电脑ie11降级ie10 ie9 ie8方法详解</a></li> <li><a href="/a/358.html" title="打开IE浏览器显示空白页如何解决">打开IE浏览器显示空白页如何解决</a></li> <li><a href="/a/617.html" title="Win10 Edge浏览器开发者设置如何关闭">Win10 Edge浏览器开发者设置如何关闭</a></li> <li><a href="/a/782.html" title="解决火狐浏览器在win10系统下无法打开网页视频">解决火狐浏览器在win10系统下无法打开网页视频</a></li> <li><a href="/a/641.html" title="修复Win7系统只要打开浏览器就死机问题">修复Win7系统只要打开浏览器就死机问题</a></li> <li><a href="/a/741.html" title="网速很快IE浏览器打开网页速度却很慢">网速很快IE浏览器打开网页速度却很慢</a></li> <li><a href="/a/353.html" title="升级win10除了edge浏览器其他浏览器无法上网如何解决">升级win10除了edge浏览器其他浏览器无法上网如何解决</a></li> </ul> </div> <div class="hot_tags mt10"> <div class="tit11"><span>热门标签</span></div> <ul class="acc"> <a href="/tag/12.html" target="_blank">qq</a> <a href="/tag/xitong/" target="_blank">系统</a> <a href="/tag/19.html" target="_blank">微软</a> <a href="/tag/22.html" target="_blank">邮件</a> <a href="/tag/131.html" target="_blank">浏览器</a> <a href="/tag/132.html" target="_blank">ie9</a> <a href="/tag/160.html" target="_blank">IE11</a> <a href="/tag/162.html" target="_blank">ie8</a> <a href="/tag/163.html" target="_blank">IE浏览器</a> <a href="/tag/164.html" target="_blank">Edge浏览器</a> <a href="/tag/165.html" target="_blank">Windows 7 64位</a> <a href="/tag/166.html" target="_blank">奇虎360</a> <a href="/tag/167.html" target="_blank">IE10</a> <a href="/tag/168.html" target="_blank">Edge</a> <a href="/tag/169.html" target="_blank">win10</a> <a href="/tag/170.html" target="_blank">IE12</a> <a href="/tag/171.html" target="_blank">UC浏览器</a> <a href="/tag/172.html" target="_blank">火狐浏览器</a> <a href="/tag/173.html" target="_blank">腾讯</a> <a href="/tag/174.html" target="_blank">QQ浏览器</a> </ul> </div> </div> </div> <div id="footbar" class="mt20"> <span style="display:none"><script type="text/javascript"src="//staticfile.iefans.net/iefans/oldtheme/pc/sc/js/tongji.js"></script></span> Copyright © 1998-2017 www.iefans.net All Rights Reserved 湘ICP备13012168号-17 </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?4ad42f0c3d597cf04ff8b57f96d303a1"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>