【Node.js】使用iconv-lite解決中文亂碼 (GB2312)

 

作爲新手,碰到問題了就google了一下,網上已經有teary:window下nodejs爬取gb2312網頁出現亂碼的解決方案出來了。

本文和上面的作法幾乎相同,只是自己不想引用bufferhelper,自己用JavaScript原生的Buffer替代實現了。

代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var http = require("http");
var iconv = require('iconv-lite');
var url = 'http://www.qq.com/';
http.get(url, function(res){
var arrBuf = [];
var bufLength = 0;
res.on("data", function(chunk){
arrBuf.push(chunk);
bufLength += chunk.length;
})
.on("end", function(){
// arrBuf是個存byte數據塊的數組,byte數據塊可以轉爲字符串,數組可不行
// bufferhelper也就是替你計算了bufLength而已
var chunkAll = Buffer.concat(arrBuf, bufLength);
var strJson = iconv.decode(chunkAll,'gb2312'); // 漢字不亂碼
console.log(strJson);
});
});

GB2312編碼的網頁鏈接有:騰訊主頁;GBK編碼的網頁鏈接有:搜狐主頁。

怎麼查看網頁是哪些編碼呢?可以直接瀏覽器打開然後右鍵查看源代碼,在meta標籤中去查看Content-Type就好了.如下圖.

charset.web


About Sodino

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章