开发者社区> 问答> 正文

使用iconv 从gb2312转utf-8经常出错? 400 报错

使用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)

不知道有没有其他的方式进行编码转换

展开
收起
爱吃鱼的程序员 2020-06-02 16:59:04 690 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    建议你用request 这个模块抓取,jsdom解析。######

    引用来自“iblue”的答案

    建议你用request 这个模块抓取,jsdom解析。
    数据已经抓过来了。就是编码的问题
    ######encoding:'gb2312' > encoding:null 试试######

    var iconv = require('iconv-lite');

    var content = iconv.decode(buf,'gb2312');

    用iconv-lite试试。

    2020-06-02 16:59:18
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载