编辑
2021-09-19
undefined
00
请注意,本文编写于 1093 天前,最后修改于 28 天前,其中某些信息可能已经过时。

目录

使用 axios 请求 gbk 编码的网站,将会出现乱码,原因很简单,node 默认字符编码为 utf8,如果要正常显示 gbk 数据的话就需要将 gbk 转 utf8 格式。

解决办法

借助iconv-lite,不让 axios 自动处理响应数据,添加responseTypetransformResponse参数,演示代码如下

js
import axios from 'axios' import * as iconv from 'iconv-lite' axios .get(`https://www.ip138.com/`, { responseType: 'arraybuffer', transformResponse: [ function (data) { return iconv.decode(data, 'gbk') }, ], }) .then((res) => { console.log(res.data) })

或者不使用transformResponse,在响应结束后使用iconv.decode(res.data, 'gbk'),使用transformResponse相对优雅一点。

如果返回的是 json 格式的话,可以直接JSON.parse转为 json 对象(前提得确保是 json 格式,不然解析报错)

js
return JSON.parse(iconv.decode(data, 'gbk'))

本文作者:任浪漫

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!