asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

asp.net 里include UTF8 垃圾问题


发布日期:2021年11月23日
 
asp.net 里include UTF8 垃圾问题

很久以前在我第一次使用 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>

被忽略暂时这样吧期待更好的解决方案

上一篇:ASP.NET用URLRewriter.dll实现伪静态

下一篇:一个简单的ASP.NET Forms 身份认证