CNode

nodejs爬gb2312编码的网页时,返回中文显示乱码?

问答
Ggarfieldon757发布于10 年前最后回复10 年前9 回复18382 浏览0 收藏

我是初学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">ϰ��ƽ����ȫ��¼\n <a href="http://lianghui.huanqiu.com/2016bd/\" target="_blank" class="a3" mon="ct=1&a=1&c=top&pn=0">����ר��

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

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

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

查看回复

回复 (9)

N
njaulj#1·10 年前

iconv-lite

G
garfieldon757#2·10 年前
引用 njauljiconv lite

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

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

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

E
elrrrrrrr#3·10 年前

应该是使用错啦, 可以参照一下这里的实现哦 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

G
garfieldon757#4·10 年前
引用 elrrrrrrr应该是使用错啦, 可以参照一下这里的实现哦 ref

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

I
im-here#5·10 年前

mk

Y
yongningfu#6·10 年前

mk

C
chenxiaohu#7·10 年前

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

M
magicdawn#9·10 年前

superagent 大法好 superagent-charset 大法好

参与回复
登录后即可参与回复。登录