關(guān)于shtml頁(yè)面include問題解決方案
這幾天再做站點(diǎn)靜態(tài)化工作,本以為很簡(jiǎn)單的事情,不想實(shí)際實(shí)現(xiàn)過程中還是遇到了些小問題
頁(yè)面上有一些是公用嵌套頁(yè)如head.inc,bottom.inc等,為了修改維護(hù)方便決定使用shtml的include來解決,隨之問題來了
<!--#include file=”head.inc”-->這樣包含后發(fā)現(xiàn)頁(yè)面上會(huì)出現(xiàn)一個(gè)空行,網(wǎng)上查資料后發(fā)現(xiàn)是因?yàn)閡tf-8的BOM頭引起的,于是測(cè)試結(jié)果如下
head.inc編碼為utf-8有bom時(shí)
*.aspx頁(yè)面<!--#include file=”head.inc”-->沒有任何問題
*.shtml頁(yè)面<!--#include file=”head.inc”-->在引用的地方會(huì)出現(xiàn)一個(gè)空行
head.inc編碼為utf-8無bom時(shí)
*.aspx頁(yè)面<!--#include file=”head.inc”-->頁(yè)面出現(xiàn)亂碼
*.shtml頁(yè)面<!--#include file=”head.inc”-->沒有任何問題
google了一番,找到如下解決方案,希望對(duì)遇到此問題的朋友有所幫助
解決方案1.
1.修改head.inc編碼格式為utf-8無bom
2.配置文件中添加以下節(jié)點(diǎn)
<system.web>
<globalization requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"/>
</system.web>
這里最主要的是fileEncoding="utf-8"可以解決.aspx文件include的亂碼問題
下面是用c#創(chuàng)建無bom的utf8編碼文件方法(默認(rèn)創(chuàng)建的文件都是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-->
這樣以后可以實(shí)現(xiàn)同樣效果
ps:這種方式時(shí)需要添加注釋的地方必須在head.inc頂部,不可以這樣寫<!--#<!--#include file="head.inc"--><!--bom-->
注:此文章屬懶惰的肥兔原創(chuàng),版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接
若您覺得這篇文章還不錯(cuò)請(qǐng)點(diǎn)擊下右下角的推薦,有了您的支持才能激發(fā)作者更大的寫作熱情,非常感謝。
如有問題,可以通過lzrabbit@126.com聯(lián)系我。
浙公網(wǎng)安備 33010602011771號(hào)