node axios gbk 中文乱码
2021-06-08 本文已影响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