最近仿照anywhere寫個anyentry目錄讀取器,發現使用stream.pipe()將文件輸入到頁面時,出現中文亂碼
看哇
看到着實不爽,不解決咋能算
於是開始尋找問題根源
一、配置encoding
一開始就想到了是stream.pipe()
文件讀取的時候沒有設置編碼
看官網的介紹是這樣的
於是果斷加上
然鵝 測試然並卵
二、配置html的charset
再一細想應該是html沒有設置 charset 的原因
跑去一看html
有配置呀! ???那奇了怪了
靜下心來在想想,再次運行發現
這個爲什麼沒有亂碼?!
於是比對頁面
這個是目錄頁面
這個是文件頁面
發現head中根本就沒有東西
再看一次代碼,總算是明白了
這個是直接將其文件流返回給response的
而目錄是使用了html模板進行渲染的,就是是一個亂碼一個沒亂的原因了
三、setHeader 增加charset
最後res.setHeader('Content-Type', contentType['text']+"; charset=utf-8");
增加一個charset=utf-8
解決問題
好了問題解決,告一段落,其他廢話不多說
效果測試可以 本地安裝 npm i -g anyentry
, anyentry -p 9999
源碼地址可以訪問 https://github.com/dengxiaoning/anyentry