fis3是一款強大的前端自動化構建工具,提供了很多非常實用的功能,具體參考http://fis.baidu.com/,使用該工具需要安裝node環境。
最近在部署網站的時候嘗試了一下使用該工具對前端資源進行處理,因為 FIS3 的構建不會修改源碼,而是會通過用戶設置,將構建結果輸出到指定的目錄,所以用起來很放心。在使用的過程中發現了一個問題,就是本來正常的網站,通過fis3處理后,出現了中文亂碼情況,這個問題不解決就沒法使用了。首先,查看了一下用fis3處理前后的文件編碼,發現未處理前是帶Bom的utf8格式(因為是在windows環境中使用visual studio開發的asp.net項目,所以在保存的時候,vs會自動將文件存為帶Bom的utf8格式),處理后變為不帶Bom的utf8格式,看來是fis3對utf8格式的文件進行了處理,去除了文件中的Bom頭,于是找到fis3模塊的安裝目錄(可以通過npm root -g
命令找到node全局模塊的安裝目錄,如果安裝了fis3就會在該目錄中找到fis3模塊對應的源文件目錄),打開lib目錄下的util.js文件,發現在667行的_.readBuffer方法中對帶Bom的utf8格式文件的內容刪除了第一個字節。
if (buffer.charCodeAt(0) === 0xFEFF) { buffer = buffer.substring(1);}
于是,為了與vs保存的文件格式一致,在這里注釋掉這句代碼,使處理后的文件保留BOM頭。經過修改后重新部署,發現依然是亂碼,這下有點困惑了,格式都該一致了,怎么還不行呢,難道是網站的配置有問題嗎,于是看了一眼web.config文件,對請求與響應格式也都進行配置,
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" />
并且網頁中也寫了 <meta http-equiv="Content-Type" Content="text/html;charset=utf-8">
,既然這兩個地方都沒問題,那么是不是iis的問題呢,于是打開iis,在“.NET全球化”里面發現文件的編碼是gb2312,將其改為utf8,重新部署,這回問題總算解決了。
|
新聞熱點
疑難解答