奇怪的Dotnetnuke网页乱码问题

用dnn做的一个网站,前一天还很正常,第二天访问时有时出现乱码,有时下载的的页面只显示出一部分,查看源代码,发现html文件没有下载完。

很是奇怪,因为没有做其它什么操作,怎么会出现这个问题呢?刚开始怀疑是不是文件编码或者皮肤编码的问题,经过检查发现全部采用的UTF-8编码,没有问题。使用HttpLook抓取数据包,发现Content-Type中的编码也是UTF-8,也没有问题。

奇怪的是采用FireFox3显示却是正常的。

在捣鼓了半天后,几乎排除了所有可能造成乱码的地方。

在百思不得其解的时候,突然想到是否是IE进行Html文件解析的时候在碰到某种编码的字符后进行了转换。

于是在Default.aspx中强行加上<meta http-eqiv="ContentType" content="text/html,charset=UTF-8" />

这时候发现确实不会乱码,但是奇怪的是页面还是无法显示完。总是只显示了一部分页面。感觉是Web服务器只发送了部分数据过来就中止。就象我们有时候写Response.End那种感觉,在发送了部分数据后就中止了后面的处理。

于是又分析了半天后,想到在DNN主机设置中设置了一些参数,例如为了提高网络性能进行的页面压缩。有可能是解压的时候发生的错误。

把压缩方式改为无后,尽然立刻变得正常了。

心中在想,因为主机采用的是Gzip的压缩方式,莫非dnn的Gzip压缩方式有bug?

再回到主页查看的时候,发现页面尾部莫名的多了个网络警察的图标,连接地址是福建网络警察的网址。

查看html源码发现在</html>后面插入了一段代码。

<center><div class='xmga_layer'><a href='http://www.xiamen.cyberpolice.cn/' target='_blank'><img border='0' width='38' height='38' src='http://www.xiamen.cyberpolice.cn/image/gt.gif' /></div></center>

这下载恍然大悟了!

原来问题尽然是因为网警(或者主机供应商)强行在页面中插入了链接图标的html代码。

可是令人气愤的是,他们估计在网关中截获http协议,如果是html文件就在后面插入这段代码,但是他们却没有分析内容是否加密或者进行了压缩。这样它把内容插入进来后,ie进行解压翻译的时候自然就会出现错误。

问题终于解决!

再此,记录下这个问题,希望帮助碰到这个问题的朋友,以为这种问题很难发现。例如,如果网警实在internet网关中进行的处理,那么你在本地访问是发现不来问题的,只有远端的用户才会发现问题,然后客户打电话给你,说访问你们的网站乱码了,结果你在本地搞了半天都没有发现乱码。绝对想不到问题出在哪里。当然如果你知道会在web网关或者其它传输中插入这个东西,当然就知道问题所在了!

ps:

1.但是奇怪的是firefox却能正确解析,这个还不知道什么原因。

2.后来我试者把压缩方式改为deflate,发现firefox3尽然提醒不支持该编码模式,而ie却可以。看来firefox3不支持deflate编码,感觉奇怪,因为这个编码也是很普遍的啊?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值