作为新手,碰到问题了就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(){
var chunkAll = Buffer.concat(arrBuf, bufLength);
var strJson = iconv.decode(chunkAll,
'gb2312');
console.log(strJson);
});
});
|
GB2312编码的网页链接有:腾讯主页;GBK编码的网页链接有:搜狐主页。
怎么查看网页是哪些编码呢?可以直接浏览器打开然后右键查看源代码,在meta
标签中去查看Content-Type
就好了.如下图.

About Sodino