nodejs爬gb2312编码的网页时,返回中文显示乱码?
发布于 9 年前 作者 garfieldon757 17499 次浏览 最后一次编辑是 8 年前 来自 问答

我是初学nodejs小白,参照群里的demo,尝试爬去页面上的一些数据; demo里是爬取cnodejs.org首页的数据,cnodejs.org的编码是utf-8,中文返回显示正常; 自己尝试去修改,爬去一些新闻网站(news.qq.com/news.baidu.com)的页面新闻数据,这些网站的编码是gb2312,运行爬虫脚本的时候,返回的指定元素在console打印出来如下:

<a href=“http://lianghui.huanqiu.com/2016/roll/2016-03/8722543.html?from=bdwz” target="_blank" class=“a3” mon=“ct=1&a=1&c=top&pn=0”>ϰ��ƽ����ȫ��¼</a>\n <a href=“http://lianghui.huanqiu.com/2016bd/” target="_blank" class=“a3” mon=“ct=1&a=1&c=top&pn=0”>����ר��</a>

PS:“ϰ”诸如这种代码,我查了下,叫做NCR,在浏览器这句中文显示如下:

ϰ��ƽ����ȫ��¼

所以想请教下前辈,这个gb2312的中文返回乱码的坑,应该问题是出在哪里了呢?

9 回复

@njaulj 是的,最初我也是参考了网上很多字符串吗的建议,使用iconv-lite进行转吗,可是结果是这样的:

“习锟斤拷平锟斤拷锟斤拷全锟斤拷录”

我个人认为是get回来的页面里的中文字符已经是有问题的,但是对其中的机理并不是很清楚,求指导~

应该是使用错啦, 可以参照一下这里的实现哦 ref

'use strict';

const charset = require('superagent-charset');
const request = require('superagent');
charset(request);

request
  .get('news.qq.com/news.baidu.com')
  .charset('gbk')
  .end((err, res) => {
    console.log('--------------->', res.text);
  });

untitled3.png

@elrrrrrrr 多谢指点,问题已解决。

每个人都会遇到并解决的问题😹

@garfieldon757

手持两把锟斤拷,口中疾呼烫烫烫~

superagent 大法好 superagent-charset 大法好

回到顶部