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

Node.js中Axios GET请求返回特殊字符问题求助

解决Node.js中Axios请求返回特殊字符的问题

问题原因

Node.js环境下,Axios默认不会自动处理gzip/deflate压缩的响应(浏览器环境会自动完成解压),而JSONPlaceholder的接口会返回gzip压缩的数据,直接打印未解压的Buffer就会显示为特殊字符。Postman会自动处理压缩响应,因此能正常返回数据。

解决方案

方法1:配置Axios自动解压

修改请求配置,明确启用解压并设置Accept-Encoding头:

const axios = require("axios");
async function getData() {
  const resp = await axios.get(
    "https://jsonplaceholder.typicode.com/users",
    {
      headers: {
        'Accept-Encoding': 'gzip, deflate'
      },
      decompress: true // 明确启用自动解压
    }
  );
  console.log(resp.data);
}
getData();

方法2:手动解压响应数据

如果自动解压不生效,可通过Node.js自带的zlib模块手动解码:

const axios = require("axios");
const zlib = require("zlib");
const { promisify } = require("util");
const gunzip = promisify(zlib.gunzip);

async function getData() {
  const resp = await axios.get(
    "https://jsonplaceholder.typicode.com/users",
    {
      responseType: 'arraybuffer', // 指定响应类型为二进制数据
      headers: {
        'Accept-Encoding': 'gzip'
      }
    }
  );
  
  // 解压并转换为JSON
  const decompressedBuffer = await gunzip(resp.data);
  const userData = JSON.parse(decompressedBuffer.toString());
  console.log(userData);
}
getData();

方法3:升级Axios版本

部分旧版本Axios在Node环境的解压逻辑存在问题,可尝试升级到最新稳定版:

npm install axios@latest

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:15:42