Character encoding Axios的编码问题

Character encoding Axios的编码问题,character-encoding,axios,Character Encoding,Axios,我正在获取一个带有的网页,但响应的内容类型是ISO-8859-1,axios给出的结果似乎将其解析为UTF-8,结果包含损坏的字符 我试图转换结果编码,但没有任何效果,我认为它不起作用,因为 通过库中的示例,我可以将encoding设置为null并克服此问题,但我想问您,我可以使用axios做些什么来禁用或更改自动编码?您可能不需要答案,但对于其他人: 我的做法是: 使用如下设置的responseType和responseEncoding发出请求 const response=wait axio

我正在获取一个带有的网页,但响应的内容类型是ISO-8859-1,axios给出的结果似乎将其解析为UTF-8,结果包含损坏的字符

我试图转换结果编码,但没有任何效果,我认为它不起作用,因为


通过库中的示例,我可以将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,有什么区别吗?-你能发送到哪里开始学习这个吗?你的资源,谢谢