阅读文章

asp.net 里 include UTF8 垃圾问题

[日期:2008-04-18] 来源:  作者: [字体: ]

     很久以前,在我第一次使用 utf-8 编码做网站时,就遇到过 IE 下莫名其妙的空出一行(FireFox 下无问题),肉眼看不见,也就是 UTF-8 BOM 签名了,更多 BOM 知识请查找“Unicode BOM”。
  
  先讲讲我的项目架构,IIS + .net 2.0 + SSI
  暂且不讨论为什么要用 SSI,而不用其它技术(如 UserControl)
  
  生成 index.sHTML 肯定要带 BOM,其实带不带也不会影响页面上会出现空白行。
  index.sHTML 内容如下:
  
  
  <html>
  <body>
  
  <!--#include file="head.shtml"-->
  </body>
  </html>
  
  1、head.sHTML 保存为 UTF-8 带 BOM 时,会出现空白行(页面元素当然不止这些)。
  2、head.sHTML 保存为 UTF-8 不带 BOM 时,会出现乱码,因为 SSInc.dll 加载这个文件时,不知道文件的编码(因为没有 BOM 签名),因此会按 GBK 来加载文件,最后乱码。。。
  
  所以,正也不行,反也不行,只有最后一招了,也是迫不得已。。
  
  
  
  改 index.sHTML 为:
  <html>
  <body>
  
  <!--<!--#include file="head.shtml"-->
  </body>
  </html>
  在 head.sHTML 的页开头加上
  <!--BOM-->
  内容。。。。。
  意图 将 <!--#include 前的 <!-- 和 head.shtml 里的 BOM--> 用HTML注释掉,在 ASP 下应该没有问题。
  2年前,用 ASP.net include 就发现一个问题,就是它的解释方法和 ASP 完全不同,不信可以试试
  <!--<!--#include file="head.shtml"-->执行结果等效于
  <!--#include file="head.shtml"-->
  
  
  
  又试了半个小时,几近绝望,被 IE 这个小小的问题折磨。一阵乱试后发现
  
  <!--#<!--#include file="head.shtml"-->
  被忽略,暂时这样吧,期待更好的解决方案。。  


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:[视频] NicPetShop 开发全过程 第二回
下一篇:js应用-实现博客个性主页布局拖拽功能
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款