一位客戶請求一個網絡爬蟲,分析他的網站,並生成一個CSV文件,其中包含一些來自網站的信息,但我遇到了編碼問題。Javascript charset編碼
我檢查了頁面,我發現Content-Type
標題設置爲"text/html; charset=utf-8"
,而meta標記Content-Type
具有相同的值。
我用簡單的字符串連接產生的結果,如CONTENT += line + '\r\n';
,並在準備好時,我提示文件下載:
var data = new Blob([CONTENT], { type: 'text/plain; charset=utf-8' });
saveAs(data, 'crawler.csv');
我期望的編碼是正確的,因爲所有的內容是使用UTF -8編碼,但它不是,我仍然得到一些不正確的編碼,如RADIOFREQUÃNCIA
,它應該讀RADIOFREQUÊNCIA
。在大多數情況下,口音和變音符號由Ã
取代。
我試過使用幾種編碼/解碼方法,但沒有效果。任何人都有一些建議?
發送數據*標記爲它的物理編碼。*將Content-Type設置爲「foo/bar; charset = utf-8」不會奇蹟般地生成數據UTF-8。 (您的觀察結果表明,您實際上是以8位編碼方式發送數據的。) – Tomalak 2015-04-05 16:17:43
我沒有寫網站,我怎麼知道它實際在哪個編碼? – 2015-04-05 16:21:00
您只能查看通過線路傳輸的字節並將它們與編碼圖表進行比較。如果Content-Type頭部與數據匹配,則客戶端上的所有內容都是自己的,並且您不會注意到它的任何內容。如果沒有......那麼服務器端的東西已經被破壞了,在客戶端上你可以做的很少。 – Tomalak 2015-04-05 16:24:27