很久以前在我第一次使用 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>
被忽略暫時這樣吧期待更好的解決方案
From:http://tw.wingwit.com/Article/program/net/201311/11836.html