使用iconv 从gb2312转utf-8经常出错? 400 报错
/** * 采集39问答网 */
var n = require('needle') var $ = require('jquery') var iconv = require('iconv').Iconv; n.get('http://ask.39.net/browse/313-2-1.html',{encoding:'gb2312'},function(error,response,body){ //console.log(response.statusCode) var buf = new Buffer(body,'binary'); var content = new iconv('gb2312','UTF8').convert(buf).toString() //采集到的链接 var $(content).find('.bt').each(function(index,value){ href[$(value).attr('href')] = $(value).attr('href') }) console.log(href) })
经常出现下面的错误
D:\node.js\node_modules\iconv\lib\iconv.js:85 throw errnoException('EILSEQ', 'Illegal character sequence.'); ^ Error: Illegal character sequence. at errnoException (D:\node.js\node_modules\iconv\lib\iconv.js:137:13) at convert (D:\node.js\node_modules\iconv\lib\iconv.js:85:17) at Iconv.convert (D:\node.js\node_modules\iconv\lib\iconv.js:108:12) at D:\node.js\cj39.js:11:46 at handle_output (D:\node.js\node_modules\needle\lib\needle.js:227:16) at Object.Needle.response_end (D:\node.js\node_modules\needle\lib\needle.js:242:7) at IncomingMessage.<anonymous> (D:\node.js\node_modules\needle\lib\needle.js:187:16) at IncomingMessage.EventEmitter.emit (events.js:117:20) at _stream_readable.js:883:14 at process._tickCallback (node.js:415:13)
不知道有没有其他的方式进行编码转换
建议你用request 这个模块抓取,jsdom解析。######
var iconv = require('iconv-lite');
var content = iconv.decode(buf,'gb2312');
用iconv-lite试试。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。