json - Node js : change csv file encoding programatically and parse to json

标签 json node.js csv encoding

我有一个使用 utf-16 编码的 csv 文件,需要将其编码更改为 utf8 并将其转换为 JSON。我正在使用 csvtojsoniconv-lite 模块。这是我的代码:

var data = fs.createReadStream("myfile.csv");
data.pipe(iconv.decodeStream('utf16'))
  .pipe(iconv.encodeStream('utf8'))
  .pipe(fs.createWriteStream("encoded.csv"));
var Converter = require("csvtojson").Converter;
var csvStr = fs.readFileSync("encoded.csv").toString();
var converter = new Converter({});
converter.fromString(csvStr, function(err, jsonObj) {
    if (err) {
        handleError(err)
    }
    console.log(jsonObj)
});

问题是 iconv 用正确的编码转换 csv 文件,但是当我读取这个文件并调用 toString() 方法时,它返回一个空字符串。我该如何解决这个问题?

最佳答案

我认为异步 pipe 可能与此有关。您可以确保只在 encoded.csv 完成后打开它,方法是将逻辑放入 end 事件中。

var data = fs.createReadStream("myfile.csv");
data.pipe(iconv.decodeStream('utf16'))
  .pipe(iconv.encodeStream('utf8'))
  .pipe(fs.createWriteStream("encoded.csv"));

data.on('end', function() {

  var Converter = require("csvtojson").Converter;
  var csvStr = fs.readFileSync("encoded.csv").toString();
  var converter = new Converter({});
  converter.fromString(csvStr, function(err, jsonObj) {
    if (err) {
        handleError(err)
    }
    console.log(jsonObj)
  });
}

https://nodejs.org/api/stream.html#stream_readable_pipe_destination_options

关于json - Node js : change csv file encoding programatically and parse to json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375816/

相关文章:

javascript - 使用 Node 解析 XLSX 并创建 json

node.js - 什么是模板/模板引擎

python 嵌套 dict 到 csv 有很多列

php - 解析在引号括起的文本中包含逗号的 csv 数据

php - csv解析, explode 避免 ""

javascript - AngularJS 资源获取失败

java - 如何防止 jackson 在反序列化中实例化新对象

javascript - 无法将 JSON 对象返回给调用程序

java - 如何在 DynamoDB 中存储对象数组

c++ - node.js 插件如何检查参数类型