nar*_*gar 3 javascript csv encoding file node.js
我正在使用这个json2scv包解析我的数据(示例 json 数据在下面的代码中描述)
\n\n我正在尝试使用以下代码在我的 Node.js 应用程序中生成 CSV 文件:
\n\n如果我在 Excel 中打开该文件,那么我就会到达应该出现符号的\xc3\x82\xc2\xa3位置\xc2\xa3。
var json2csv = require(\'json2csv\');\nvar fs = require(\'fs\');\nvar fields = [\'car\', \'price\', \'color\'];\nvar myCars = [\n  {\n    "car": "Audi",\n    "price": "\xc2\xa340000",\n    "color": "blue"\n  }, {\n    "car": "BMW",\n    "price": "\xc2\xa335000",\n    "color": "black"\n  }, {\n    "car": "Porsche",\n    "price": "\xc2\xa360000",\n    "color": "green"\n  }\n];\nvar csvStr = json2csv({ data: myCars, fields: fields, del: \',\' });\n\nfs.writeFile(\'file.csv\', csvStr, { encoding: \'utf8\' },function(err) {\n  if (err) throw err;\n  console.log(\'file saved\');\n});\n有什么想法吗 ?
\n\n谢谢。
\n我从这个答案和它的问题线程中得到了解决方案:/sf/answers/1958294061/
\n\n\n\n\nUTF-8 示例:
\n\nRun Code Online (Sandbox Code Playgroud)\n\nfs.writeFile(someFilename, \'\\ufeff\' + html, { encoding: \'utf8\' }, function(err) {\n /* The actual byte order mark written to the file is EF BB BF */\n}\nUTF-16 Little Endian 示例:
\n\nRun Code Online (Sandbox Code Playgroud)\nfs.writeFile(someFilename, \'\\ufeff\' + html, { encoding: \'utf16le\' }, function(err) {\n /* The actual byte order mark written to the file is FF FE */\n}\n
经过上面的答案和它的线程后,我修改了我的代码,如下所示:
\n\n"\\t"为"," "\\ufeff"到 csv 字符串前面"utf16le"\ 而不是"utf8"这是我更新的代码:
\n\nvar json2csv = require(\'json2csv\');\nvar fs = require(\'fs\');\nvar fields = [\'car\', \'price\', \'color\'];\nvar myCars = [\n  {\n    "car": "Audi",\n    "price": "\xc2\xa340000",\n    "color": "blue"\n  }, {\n    "car": "BMW",\n    "price": "\xc2\xa335000",\n    "color": "black"\n  }, {\n    "car": "Porsche",\n    "price": "\xc2\xa360000",\n    "color": "green"\n  }\n];\nvar csvStr = json2csv({ data: myCars, fields: fields, del: \'\\t\' });\n\nfs.writeFile(\'file.csv\', \'\\ufeff\' + csvStr, { encoding: \'utf16le\' },function(err) {\n  if (err) throw err;\n  console.log(\'file saved\');\n});\n希望这对其他人有帮助。
\n