Node.js将二进制文件转换为utf8

我有一个二进制格式(bytea)存储在postgresql数据库中的jrmxl(Jasper报告)文件。 我试图读取该文件,并将其转换为普通的jrmxl(XML)文件并将其保存在磁盘上。

这是我迄今为止所尝试的

var fs = require('fs'); exports.saveFile = function (pg) { //pg is the postgres connection to query the db pg.query('Select data from data_file where id = 123', function (err, result) { if (err) { console.log(err); return; } var data = result.rows[0].data; //Buffer.isBuffer(data) === true // I can get the data here. Now I try to convert it into text var file = data.toString('utf8'); fs.writeFile('report.jrxml',file, function (er) { if (er) { console.log('an error occurred while saving the file'); return; } console.log('file saved'); }} }); } 

如果我运行上面的代码,该文件被保存,但它是二元的。 我怎样才能将其转换为纯文本格式的XML文件,我可以导入ireport例如?

你可以尝试先通过一个缓冲区。 我已经使用这种技术将DB BLOB转换为base64string。

var fileBuffer = new Buffer( result.rows[0].data, 'binary' ); var file = fileBuffer.toString('utf8');