北大青鳥學校:如何處理asp.net中include UTF8的垃圾問題

北京北大青鳥學校學術部老師發(fā)現(xiàn),在指導同學們用utf-8編碼做網(wǎng)站時,很多同學都會遇到IE下莫名其妙的空出一行,大家用肉眼看不見,也就是 UTF-8 BOM 簽名了,更多 BOM 知識請查找“Unicode BOM”。這種情況該怎么辦?我們不妨看看北大青鳥學員:周曉麗同學是如何做的。

先介紹一下項目架構:IIS + .net 2.0 + SSI

暫且不討論為什么要用 SSI,而不用其它技術(如 UserControl)

生成 index.shtml 肯定要帶 BOM,其實帶不帶也不會影響頁面上會出現(xiàn)空白行。

index.shtml 內容如下:
< html>
< body>
< !--#include file=head.shtml-->
< /body>
< /html>

1、head.shtml 保存為 UTF-8 帶    BOM 時,會出現(xiàn)空白行(頁面元素當然不止這些)。

2、head.shtml 保存為 UTF-8 不帶 BOM 時,會出現(xiàn)亂碼,因為 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 就發(fā)現(xiàn)一個問題,就是它的解釋方法和 asp 完全不同,不信可以試試

< !--<!--#include file=head.shtml-->執(zhí)行結果等效于
< !--#include file=head.shtml-->

又試了半個小時,發(fā)現(xiàn)
< !--#<!--#include file=head.shtml-->
被忽略,期待更好的解決方案。北京北大青鳥學校提供。

北大青鳥網(wǎng)上報名
北大青鳥招生簡章