通过 SSH 读取 CSV 并转换为 JSON

Read CSV over SSH and convert to JSON

这是这个问题的重复

这是我尝试使用的代码:

let Client = require('ssh2-sftp-client');
let sftp = new Client();
var csv = require("csvtojson");

sftp.connect({
 host: 'HOST',
 port: 'PORT',
 username: 'USERNAME',
 password: 'PASSWORD'
}).then(() => {
 return sftp.get('/home/user/etc/testfile.csv');
  }).then((data) => {
   csv()
   .fromString(data.toString()) // changed this from  .fromStream(data)
   .subscribe(function(jsonObj) { //single json object will be emitted for each csv line
      // parse each json asynchronously
    return new Promise(function(resolve, reject) {
       resolve()
       console.log(jsonObj);
    })
   })
 }).catch((err) => {
 console.log(err, 'catch error');
});

我可以读回 CSV 数据,并且可以看到它在 console.log(jsonObj) 上变成了 JSON 格式,但是数据不可读,所有 '\x00o\x00n\x00'' ..

我不确定该行中的操作: // 异步解析每个 json

谁能帮忙弄清楚 CSV/JSON 从缓冲区返回后如何解析?

空字节 \x00 指向 encoding/decoding 问题。 CSV 文件可能使用 UTF-16 编码,但 Buffer.toString() 默认情况下使用 UTF-8 解码数据。您可以将其更改为 data.toString('utf16le')(或 data.toString('ucs2'))以强制使用正确的编码。