關於shtml頁面include問題解決方案
來源:互聯網
上載者:User
這幾天再做網站靜態化工作,本以為很簡單的事情,不想實際實現過程中還是遇到了些小問題 頁面上有一些是公用嵌套頁如head.inc,bottom.inc等,為了修改維護方便決定使用shtml的include來解決,隨之問題來了 <!--#include file=”head.inc”-->這樣包含後發現頁面上會出現一個空行,網上查資料後發現是因為utf-8的BOM頭引起的,於是測試結果如下head.inc編碼為utf-8有bom時*.aspx頁面<!--#include file=”head.inc”-->沒有任何問題*.shtml頁面<!--#include file=”head.inc”-->在引用的地方會出現一個空行head.inc編碼為utf-8無bom時*.aspx頁面<!--#include file=”head.inc”-->頁面出現亂碼*.shtml頁面<!--#include file=”head.inc”-->沒有任何問題google了一番,找到如下解決方案,希望對遇到此問題的朋友有所協助
解決方案1.1.修改head.inc編碼格式為utf-8無bom2.設定檔中添加以下節點 <system.web> <globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/> </system.web> 這裡最主要的是fileEncoding="utf-8"可以解決.aspx檔案include的亂碼問題 下面是用c#建立無bom的utf8編碼檔案方法(預設建立的檔案都是utf-8+bom的)System.Text.UTF8Encoding utf8=new System.Text.UTF8Encoding(false); using (StreamWriter sr = new StreamWriter(filePaht, false, utf8)) { sr.Write(fileContet) } 這樣以後indclude的空行和亂碼問題就都解決了
解決方案2.head.inc檔案編碼為utf-8+bom(這樣可以避免.aspx檔案include的亂碼問題)在需要include地方這樣寫<!--#<!--#include file="head.inc"-->在需要include的檔案中如head.inc頭部加上一段注釋如:<!--bom-->這樣以後可以實現同樣效果ps:這種方式時需要添加註釋的地方必須在head.inc頂部,不可以這樣寫<!--#<!--#include file="head.inc"--><!--bom-->