将JSON文件转换为nodejs中的CSV文件时出现UTF-8/16编码问题

我正在编写一个脚本来将带有中文的json文件转换为csv文件。 所有的转换工作,但中国的内容似乎出现编码问题。 如果我用Sublime打开转换的CSV文件,所有的中文单词都是正确的。 如果我用Excel (我的版本是2016)打开它,这些话没有一个是正确的。 另外,中文栏后面的下一栏信息部分将附加到未编码的中文。 如果我先用Sublime打开CSV文件,然后用带有BOM的UTF-8编码保存,则整个CSV文件在Excel中看起来是正确的。 我知道UTF-16 在Windows 10的Excel中可能会好得多,但是无论我怎么评论这个代码,都没有改变。

data = data.replace(/^\uFEFF/, ""); 

这是我的整个代码。

 var fs = require('fs'); enter code here`var json2csv = require('json2csv'); var Excel = require('exceljs'); var detectEncoding = require('jschardet'); var encoding = require("encoding"); fs.readFile('./input.json', function (err, data) { var charsetMatch = detectEncoding.detect(data); if(charsetMatch.encoding != "UTF-8") { data = encoding.convert(data, "UTF-8", charsetMatch.encoding).toString("utf8"); data = data.replace(/^\uFEFF/, ""); } var jsondata = JSON.parse(data); var csvFields = Object.keys(jsondata[0]); var unwindFields = []; for(var i = 0; i < csvFields.length; i++) { if(Array.isArray(jsondata[0][csvFields[i]])) { unwindFields.push(i); } } json2csv({data: jsondata, fields: csvFields, excelString: true}, function(err, csv) { fs.writeFile('./output.csv', csv, function(err) { var workbook = new Excel.Workbook(); workbook.csv.readFile("./output.csv").then(function(worksheet) { for(var i = 0; i < csvFields.length; i++) { for(var x = 0; x < jsondata.length; x++) { var cellCode = (String.fromCharCode(parseInt((i / 26), 10) + 64) + String.fromCharCode(i - 26 * parseInt((i / 26), 10) + 1 + 64) + "" + (x + 2)).replace(/\@/g,""); var cell = worksheet.getCell(cellCode); if(cell.value != "" && cell.value != null && cell.value != undefined && typeof cell.value === "string") { cell.value = cell.value.replace(/\[/g,"(").replace(/\]/g,")").replace(/\)\"\,\"\(/g,"), \n(").replace(/\(\"\(/g,"((").replace(/\)\"\)/g,"))").replace(/\"\,\"/g,","); } } } workbook.csv.writeFile("./output.csv").then(function() { console.log("All files have been converted successfully!"); }); }); }); }); }); 

任何人都可以帮助我解决Windows 10Excel 2016中的中文编码问题?

       

网上收集的解决方案 "将JSON文件转换为nodejs中的CSV文件时出现UTF-8/16编码问题"