node axios gbk 中文乱码

2021-06-08  本文已影响0人  秋天下雨淋湿冬天

背景

nodejs项目,用axios请求页面文档,如果原页面是gbk编码,这样写会出现中文乱码

// const axios = require('axios')

         axios({
            method: 'get',
            url: 'http://www.qklnews.com/matchvideo/',
          }).then(function (response) {
            console.log(response.data) //输出的中文乱码
            
          }).catch(function (error) {
          });

无效方案1,增加Content-type

改为这样

         axios({
            method: 'get',
            url: 'http://www.qklnews.com/matchvideo/',
            headers: {
              'Content-type': 'application/json;charset=UTF-8'
            },

          }).then(function (response) {
            console.log(response.data) //输出的中文乱码
            
          }).catch(function (error) {
          });

其他文章说是axios的bug,不追究了

有效办法

// const iconv = require('iconv-lite')

         axios({
            method: 'get',
            url: 'http://www.qklnews.com/matchvideo/',
            responseType: "arraybuffer" 

          }).then(function (response) {
            var strJson = iconv.decode(response.data, 'gbk'); 
            console.log(strJson) // 汉字不乱码 
          }).catch(function (error) {
          });

用iconv.decode处理,注意是把buffer转为字符串,所以axios需要增加配置 responseType: "arraybuffer"返回 buffer

上一篇下一篇

猜你喜欢

热点阅读