node.js - 将 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 文件以正确的结构出现,只是编码问题。
解决方案
来自@O.Jones 的评论和解决方案:问题是文件已经用拉丁文编码,但是 axios 需要 utf-8 并相应地编码。解决方案是添加
responseEncoding:"latin1"
到我通过 axios 调用发送的选项。这基本上告诉 axios 期望以与默认 utf-8 不同的编码得到答案。
由于现在以正确的编码读取数据,因此此后无需进一步编码。
推荐阅读
- ios - 动态视图渲染,SwiftUI
- python - 无法使用 Beautifulsoup 抓取内容
- swift - vDSP.DCT 解包为零
- python - 使用 Pip 安装模块时出错
- python - 在 OpenCV Python 中使用鼠标单击在较大的图像上拖动、调整大小和旋转图像
- excel - MDX 计算不适用于 excel 中的小计
- arrays - 扩展集合:数组和集合,但不是字典
- tcl - 在 Tcl 脚本行中,是否可以编写 2 个或更多命令?
- json - pandas json 使用特定的 json 属性规范化键错误
- javascript - “AppComponent”类型上不存在属性“alertService”和“选项”