Character encoding Axios的编码问题
我正在获取一个带有的网页,但响应的内容类型是ISO-8859-1,axios给出的结果似乎将其解析为UTF-8,结果包含损坏的字符 我试图转换结果编码,但没有任何效果,我认为它不起作用,因为Character encoding Axios的编码问题,character-encoding,axios,Character Encoding,Axios,我正在获取一个带有的网页,但响应的内容类型是ISO-8859-1,axios给出的结果似乎将其解析为UTF-8,结果包含损坏的字符 我试图转换结果编码,但没有任何效果,我认为它不起作用,因为 通过库中的示例,我可以将encoding设置为null并克服此问题,但我想问您,我可以使用axios做些什么来禁用或更改自动编码?您可能不需要答案,但对于其他人: 我的做法是: 使用如下设置的responseType和responseEncoding发出请求 const response=wait axio
通过库中的示例,我可以将encoding设置为null并克服此问题,但我想问您,我可以使用axios做些什么来禁用或更改自动编码?您可能不需要答案,但对于其他人: 我的做法是:
responseType
和responseEncoding
发出请求const response=wait axios.request({
方法:“GET”,
网址:'https://www.example.com',
响应类型:'arraybuffer',
响应编码:“二进制”
});
响应数据
解码为所需格式let html=iso88592.decode(response.data.toString('binary');
注意:在我的例子中,我需要使用包对其进行解码
希望能有所帮助。在Matt Zabriskie的文章中,他建议使用一个,我认为这是最干净的选择
axios.interceptors.response.use(response=>{
让ctype=response.headers[“content-type”];
if(ctype.includes(“charset=ISO-8859-1”)){
response.data=iconv.decode(response.data,‘ISO-8859-1’);
}
返回响应;
})
在不使用拦截器或其他软件包的情况下,我在缓冲区中得到了以下响应:
notifications=等待axios.request({
方法:“GET”,
网址:Link,
响应类型:'arraybuffer',
ResponseEncoding:'二进制'
});
接下来,将其转换为:
let html=notifications.data.toString('latin1');
如果您必须获取png并将其保存到磁盘,它也可以很好地工作。按照@Danielhi的建议,设置responseType
和responseEncoding
后,您可以将response.data
传递到fs.writeFile()
,我真的非常感谢您的帮助,我解决了您编写的问题。我是一个相当新的编码,你能回答这些问题吗我没有使用decode,只是=>$('.aditem',result.data.toString('binary'))。每个((I,element)=>{-上一次发布在这里,也说lating1,有什么区别吗?-你能发送到哪里开始学习这个吗?你的资源,谢谢