使用convert-csv-to-json读取CSV时西里尔字符乱码求助
解决Win1251编码CSV转JSON时西里尔字符乱码问题
问题根源在于convert-csv-to-json默认用UTF-8编码读取文件,但你的CSV是Win1251编码,直接读取必然乱码,调用asciiEncoding()也没用——ASCII和Win1251是完全不同的编码体系,根本不匹配。
你可以手动先完成文件编码转换,再交给这个包处理,具体步骤如下:
- 安装转码工具包
iconv-lite(Node.js原生不支持Win1251编码解析):
npm install iconv-lite
- 修改代码逻辑,先读取文件并转成UTF-8字符串,再进行CSV转JSON操作:
const csvToJson = require('convert-csv-to-json'); const fs = require('fs'); const iconv = require('iconv-lite'); // 读取Win1251编码的CSV文件,返回原始Buffer const csvBuffer = fs.readFileSync('input.csv'); // 将Buffer解码为UTF-8格式的字符串 const csvUtf8Str = iconv.decode(csvBuffer, 'win1251'); // 使用包的字符串处理方法转换为JSON const jsonResult = csvToJson.fieldDelimiter(',').getJsonFromString(csvUtf8Str); console.log(jsonResult);
这样就能正确解析西里尔字符了,因为我们先把Win1251编码的内容转换成了Node.js和convert-csv-to-json都能正确识别的UTF-8编码。
内容的提问来源于stack exchange,提问作者Yurii
相关产品推荐
相关产品推荐

