Big5到utf-8编码,同时使用Node请求来刮取网站

我是Node.js的新手,我试图使用请求模型来取消一个网站,我遇到了编码的问题:目标网站使用big5作为编码,我希望把它变成utf-8下面的代码:

var Iconv = require('iconv').Iconv; var fs = require('fs'); var big5_to_utf8 = new Iconv('big5', 'utf-8'); var buffer = big5_to_utf8.convert(fs.readFileSync('./test')); console.log(buffer.toString()); 

我怀疑问题可能是由于在报废过程中的一些错误造成的,所以为了您的参考,我的代码为scrapping:

 var fs = require('fs'); var request = require('request'); var j = request.jar() var cookie = request.cookie('ASPSESSIONIDCSDCTTSR=KDMMMIMDCCIHJIJFDKGEDFOH') j.add(cookie) request({ url: 'http://amis.afa.gov.tw/v-asp/v101r.asp', method: "POST", "Content-type": "application/x-www-form-urlencoded;", jar:true, encoding: 'utf-8', form: { mhidden1:false, myy:101, mmm:9, mdd:25, mpno:"FC", mpnoname:"%ADJ%A5%CA++++", B1:"%B6%7D%A9l%ACd%B8%DF", } }, function (error, response, body) { console.log(body); fs.writeFile("test", body); }); 

非常感谢你的帮助。

编辑:

更具体的错误,以下是代码返回的内容:

 <p align="center"><font color="#800080"> Шϥ  s     u   C  </font><em><font size="4" color="#000080">[ W @  ]</font></em><font color="#800080"> ^   e @   J     e   ~   d  </font></p> 

这是它应该返回的:

 <p align="center"><font color="#800080">請使用瀏覽器工具列中</font><em><font size="4" color="#000080">[上一頁]</font></em><font color="#800080">回到前一輸入條件畫面繼續查詢</font></p> 

我也尝试使用iconv-lite而不是iconv,将函数调用replace为以下内容:

 function (error, response, body) { var bufferhelper = new BufferHelper(); bufferhelper.concat(body); console.log(iconv.decode(bufferhelper.toBuffer(), 'Big5')); }); 

只有得到:

 <p align="center"><font color="#800080"> 濆詉胬胬譃胬舚胬</font><em><font size="4" color="#000080">[抝胬]</font></em><font color="#800080">䒷胬蓚胬鸜胬胬蓚胬趦胬胬</font</p> 

我使用iconv-lite将big5解码为utf8。

你应该设置encoding:null request将返回原始编码页面。

这是示例代码。

 var iconv = require('iconv-lite'); var request = require('request'); request({ url: 'http://amis.afa.gov.tw/v-asp/v101r.asp',encoding:null}, function(err, response, body) { if (!err && response.statusCode == 200) { var str = iconv.decode(new Buffer(body), "big5"); console.log(str); } }); 

而且是回报

 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <title>v101r</title> <meta name="GENERATOR" content="Microsoft FrontPage 4.0"> <meta name="Microsoft Theme" content="none, default"> </head> <body> <p align="center">查無結果!</p> <p align="center"><font color="#800080">請使用瀏覽器工具列中</font><em><font size="4" color="#000080">[上一頁]</font></em><font color="#800080">回到前一輸入條件畫面繼續查詢</font></p> </body> </html> 

我在RedHat EL 6.4iconv-lite 0.2.11上使用node.js 0.10.20 iconv-lite 0.2.11request 2.27.0

我可以build议我的代码页库 :

 var request = require('request'), codepage = require('codepage') request({ url: 'http://amis.afa.gov.tw/v-asp/v101r.asp',encoding:null}, function(err, response, body) { if (!err && response.statusCode == 200) { var str = codepage.utils.decode(950, new Buffer(body)); console.log(str); } }); 

产量

 ... <p align="center"><font color="#800080">請使用瀏覽器工具列中</font><em><font size="4" color="#000080">[上一頁]</font></em><font color="#800080">回到前一輸入條件畫面繼續查詢</font></p>