Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 读取csv时返回非utf-8响应_Node.js_Csv_Google Cloud Storage - Fatal编程技术网

Node.js 读取csv时返回非utf-8响应

Node.js 读取csv时返回非utf-8响应,node.js,csv,google-cloud-storage,Node.js,Csv,Google Cloud Storage,在我的例子中,我尝试读取谷歌云存储上可用的csv文件。 这是我的代码: const csv = require('csv-parser'); const fs = require('fs'); const file= storage.bucket('my-bucket').file('file.csv') file.createReadStream({encoding: 'utf8'}) .on('error', (err) => { console.log(err

在我的例子中,我尝试读取谷歌云存储上可用的csv文件。 这是我的代码:

const csv = require('csv-parser');
const fs = require('fs');

const file= storage.bucket('my-bucket').file('file.csv')

file.createReadStream({encoding: 'utf8'})
    .on('error', (err) => {
      console.log(err)
    })
    .pipe(csv())
    .on('data', (row) => {
        console.log(row);
    }) 
    .on('end', (end) => {
        console.log(end)
    })

  });
但返回的内容如下:

'\u0000D\u0000a\u0000i\u0000l\u0000y\u0000 \u0000D\u0000e\u0000v\u0000i\u0000c\u0000e\u0000 \u0000I\u0000n\u0000s\u0000t\u0000a\u0000l\u0000l\u0000s\u0000': '\u00005\u00000\u0000'
知道这里可能出了什么问题吗?

一种方法可以是:

const csv = require('csv-parser');
const fs = require('fs');
const file = storage.bucket('my-bucket').file('file.csv');

let data = '';
file.createReadStream({encoding: 'utf8'})
    .on('error', (err) => {
        console.log(err)
    })
    .pipe(csv())
    .on('data', (row) => {
        data += row; // or directly apply as row.toString('utf-8')
        console.log(row);
    })
    .on('end', (end) => {
        // so all is buffered now lets make it readable
        data = data.toString('utf-8');
        console.log(data);
    });

由于您读取的数据的每个字节看起来都是
00
,因此该文件可能不是UTF-8,而是UTF-16

请尝试
file.createReadStream({encoding:'utf16le'})
,或者如果它仍然是乱码,请尝试
file.createReadStream({encoding:'utf16be'})