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格式文件的內容刪除了第一個字節。html
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,從新部署,這回問題總算解決了。node