使用Express、Node、Prisma搭建服务器时Axios请求乱码求助
解决Axios请求第三方API出现菱形问号乱码的方案
核心原因
第三方API返回的响应编码并非UTF-8(比如GBK、GB2312等),或是Axios自动解析响应时的编码逻辑与实际编码不匹配。另外你之前配置的charset: "utf8"并非Axios合法配置项,不会生效。
具体解决方案
1. 确认第三方API的实际响应编码
用curl命令查看响应头的Content-Type字段,明确返回的编码格式:
curl -I https://sandbox.xola.com/api/categories
查看输出中的Content-Type字段,比如如果包含charset=gbk,就说明响应是GBK编码。
2. 手动处理响应编码(推荐)
通过指定responseType: 'arraybuffer'获取原始二进制数据,再用iconv-lite库按实际编码解码:
首先安装依赖:
npm install iconv-lite
修改代码:
import axios from "axios"; import iconv from "iconv-lite"; export function xola() { const options = { method: "GET", url: "https://sandbox.xola.com/api/categories", headers: { accept: "application/json", "X-API-VERSION": "2017-06-10", }, responseType: 'arraybuffer', // 获取原始二进制数据,避免Axios自动转码 responseEncoding: 'binary' }; axios .request(options) .then(function (response) { // 替换为你查到的实际编码,比如'gbk'、'gb2312'等 const decodedStr = iconv.decode(response.data, 'gbk'); const data = JSON.parse(decodedStr); console.log(data); }) .catch(function (error) { console.error(error); }); }
3. 升级Axios到最新版本
部分旧版Axios对responseEncoding的处理存在bug,执行以下命令升级:
npm update axios
内容的提问来源于stack exchange,提问作者nezie
相关产品推荐
相关产品推荐

