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