熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

asp.net 裡include UTF8 垃圾問題

2013-11-13 09:52:40  來源: .NET編程 

  很久以前在我第一次使用 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
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.