美文网首页
node axios gbk 中文乱码

node axios gbk 中文乱码

作者: 秋天下雨淋湿冬天 | 来源:发表于2021-06-08 18:06 被阅读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

    相关文章

      网友评论

          本文标题:node axios gbk 中文乱码

          本文链接:https://www.haomeiwen.com/subject/izsjeltx.html