You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Axios+Cheerio解析页面时俄文编码乱码显示问号问题

问题原因

爬取俄文站点时出现乱码,核心原因是目标站点使用windows-1251编码(俄语区站点常用非UTF-8编码),axios默认会以utf-8规则自动解析响应内容,编码不匹配就会导致俄文字符全部被转成问号。

修复步骤
  • 安装编码转换依赖:执行命令npm install iconv-lite
  • 修改axios请求配置,指定responseType: 'arraybuffer'获取原始二进制响应,禁止axios自动做字符串转码
  • 用iconv-lite将原始二进制数据按站点实际编码windows-1251解码为正确字符串,再传入cheerio加载
  • 原代码中重复请求了两次相同页面,冗余的selector_2相关代码可以直接删除,减少无效请求
修复后完整代码
const axios = require('axios');
const cheerio = require('cheerio');
const iconv = require('iconv-lite');

const parse = async () => {
    const getHTML = async (url) => {
        const { data } = await axios.get(url, {
            responseType: 'arraybuffer'
        })
        // 按站点实际编码解码
        const correctHtml = iconv.decode(data, 'windows-1251')
        return cheerio.load(correctHtml)
    }
    const pageSelector = await getHTML('https://asu.edu.ru/universitet/5-kontaktnaia-informaciia.html')
    
    pageSelector('.container').each((i, element)  => {
        const title = pageSelector(element).find('span').text();
        console.log(title);
    })
};
parse();

补充:如果爬取其他俄语站点遇到同类乱码,可以先查看响应头content-type字段或者页面meta标签的charset属性确认站点实际编码,替换解码时传入的编码参数即可。

内容的提问来源于stack exchange,提问作者Shaitan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 08:27:21