首页 > 解决方案 > 将 CSV 转换为 json 时编码不正确

问题描述

我正在尝试将 CSV 转换为 JSON 文件。转换工作正常,但某些西班牙语字符似乎存在编码问题。该字符串在 CSV 中如下所示: SÁEZ MARÍA 当我将其导入节点 js 时,它被编码为 utf-8,但编码不正确,如下所示: SÉEZ MARÍA 我尝试将编码转换为 ISO -8859-1,但结果仍然编码不正确:S�EZ MAR�A

我正在使用 iconv-lite 进行编码:

let test = axios.get(url, options);
        test.then(response => {
          csv({ //Defying the CSV delimiter
            delimiter: ',',
            trim:true
          })
          .fromString(response.data) //Processing CSV from response
          .then(function(jsonArrayObj){
                var test = iconv.decode(Buffer.from(JSON.stringify(user)), "ISO-8859-1");
                console.log(test);
});

我也尝试过使用 Buffer.from().toString() 和所有支持的编码,但没有一个能解决这个问题。JSON 文件以正确的结构出现,只是编码问题。

标签: node.jsjsoncsvcharacter-encodingiconv

解决方案


来自@O.Jones 的评论和解决方案:问题是文件已经用拉丁文编码,但是 axios 需要 utf-8 并相应地编码。解决方案是添加

responseEncoding:"latin1"

到我通过 axios 调用发送的选项。这基本上告诉 axios 期望以与默认 utf-8 不同的编码得到答案。

由于现在以正确的编码读取数据,因此此后无需进一步编码。


推荐阅读