Axios返回乱码值问题求助(WSL2 Ubuntu环境)
Axios GET请求返回乱码的解决办法
问题根源
你遇到的乱码问题,主要是Axios 1.2.0和Node.js v19+的响应编码处理逻辑不兼容导致的——Axios默认的自动编码检测在这个环境下失效,把本该转成UTF-8的二进制数据直接输出了,而fetch的编码处理逻辑不受这个影响。
可行解决方案
强制指定响应编码
在请求配置里显式设置responseEncoding: 'utf8',跳过Axios的自动检测:const axios = require("axios"); axios.get('https://jsonplaceholder.typicode.com/users', { responseEncoding: 'utf8' }) .then(response => console.log(response.data))手动解析响应Buffer
如果上面的方法没用,就把响应类型设为arraybuffer,拿到Buffer后手动转成UTF-8字符串:const axios = require("axios"); axios.get('https://jsonplaceholder.typicode.com/users', { responseType: 'arraybuffer' }) .then(response => { const data = Buffer.from(response.data).toString('utf8'); console.log(data); })升级Axios版本
Axios 1.2.0存在和Node.js 19兼容的bug,直接升级到最新稳定版(比如1.6.x及以上)就能修复这类问题:npm install axios@latest排查WSL2代理影响
要是你在WSL2里用了代理,可能是代理篡改了响应的编码。先临时关闭代理测试:unset HTTP_PROXY unset HTTPS_PROXY测试正常的话,再调整代理设置,确保它不会修改响应的
Content-Encoding头。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

