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