2015-04-05 57 views
0

一位客戶請求一個網絡爬蟲,分析他的網站,並生成一個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。在大多數情況下,口音和變音符號由Ã取代。

我試過使用幾種編碼/解碼方法,但沒有效果。任何人都有一些建議?

+0

發送數據*標記爲它的物理編碼。*將Content-Type設置爲「foo/bar; charset = utf-8」不會奇蹟般地生成數據UTF-8。 (您的觀察結果表明,您實際上是以8位編碼方式發送數據的。) – Tomalak 2015-04-05 16:17:43

+0

我沒有寫網站,我怎麼知道它實際在哪個編碼? – 2015-04-05 16:21:00

+0

您只能查看通過線路傳輸的字節並將它們與編碼圖表進行比較。如果Content-Type頭部與數據匹配,則客戶端上的所有內容都是自己的,並且您不會注意到它的任何內容。如果沒有......那麼服務器端的東西已經被破壞了,在客戶端上你可以做的很少。 – Tomalak 2015-04-05 16:24:27

回答

0

雖然看起來很奇怪,但使用不同的縮小器解決了問題。我曾經使用this之一,然後,只是因爲,我決定嘗試this之一。問題解決了。

+1

我推薦[Closure Compiler](http://closure-compiler.appspot.com/home)。 (儘管如此,裁判員應該沒有什麼區別,我會花一些時間調查根本原因。) – Tomalak 2015-04-05 16:45:26

+0

我會在我的書籤中保留那個。事實上,它不應該,而且我剛剛經歷過這種情況時會發生什麼頭痛。我確實對這種事情發生的原因感到好奇,但檢查縮小的代碼非常麻煩,而且我沒有那種時間來提供。哦,好吧=) – 2015-04-05 16:53:10