一个小错误,消耗4小时

    一个网页页面模版,头部代码如下:

    <html>
    <head>
    <title>新楼盘管理</title>
    <meta http-equiv="Content-Type" content="text/html; charset={$charset}">
    <link href="styles/style.css" rel="stylesheet">
    <script language="javascript" src="scripts/common.js"></script>
    <script type="text/javascript" src="scripts/jquery/jquery.js"></script>
    </head>
    <body topmargin="0" leftmargin="0" >
     ……

    其中{$charset}是模版中的变量,被赋值为“utf-8”,页面也保存为 utf8 编码。

    其中“新楼盘管理”的 title 原来是没有这串字符的,我顺手就加上了。但是:出问题了!

    一定有人说,加个title能出什么问题?!

    出问题的现象是这样的,页面下载下来了,但显示是空白。能看到源代码,但浏览器就是显示不了页面的界面!

    测试了IE各种浏览器,也测试了Firefox浏览器。结果是:
    在 Apache 做服务器时无论什么浏览器都正常。
    Firefox浏览什么web服务器上的该页面,都正常!
    IE的部分版本完全正常,部分版本偶尔正常、偶尔不正常!

    最感到奇怪的就是,部分IE偶尔正常、偶尔不正常!也就是故障现象不确定,无法复制故障的环境,也就无法跟踪故障。一度怀疑浏览器版本问题,一度怀疑是 IIS 不稳定的问题(差点又把屎盆子扣到微软头上了)。

    但结果问题是:网页的编码问题。

    由于之前 titlt 标签内是空的,charset=tuf-8 就从该语句后起作用了,但加了标题字符串后,页面就不知道如何解释标题的编码了。但为什么在 Apache 下却是正常的呢?估计 Apache 解释页面时,是首先解释语句
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    然后,再把这个编码应用到整个页面,而 IIS 却是顺序解释页面的代码的。

    为什么有的浏览器正常,有的又不正常呢?原因可能也和代码的解释顺序有关。

    所以,为了兼顾各种情况,语句调整一下顺序,把定义编码的语句放到最前头即可。

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset={$charset}">
    <title>新楼盘管理</title>
    ……

    事实上,用 Drameweaver 建立页面,定义编码的语句本身就是在最前头的,还是软件工具兼容性做的最好。

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值