Node.js 生成的 csv 文件显示英镑符号 (£)

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

\n\n
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
Run Code Online (Sandbox Code Playgroud)\n\n

有什么想法吗 ?

\n\n

谢谢。

\n

nar*_*gar 5

我从这个答案和它的问题线程中得到了解决方案:/sf/answers/1958294061/

\n\n
\n

UTF-8 示例:

\n\n
fs.writeFile(someFilename, \'\\ufeff\' + html, { encoding: \'utf8\' }, function(err) {\n   /* The actual byte order mark written to the file is EF BB BF */\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

UTF-16 Little Endian 示例:

\n\n
fs.writeFile(someFilename, \'\\ufeff\' + html, { encoding: \'utf16le\' }, function(err) {\n   /* The actual byte order mark written to the file is FF FE */\n}\n
Run Code Online (Sandbox Code Playgroud)\n
\n\n

经过上面的答案和它的线程后,我修改了我的代码,如下所示:

\n\n
    \n
  • 将 delimeter 选项更改"\\t"","
  • \n
  • 添加"\\ufeff"到 csv 字符串前面
  • \n
  • 更改编码以使用"utf16le"\ 而不是"utf8"
  • \n
\n\n

这是我更新的代码:

\n\n
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: \'\\t\' });\n\nfs.writeFile(\'file.csv\', \'\\ufeff\' + csvStr, { encoding: \'utf16le\' },function(err) {\n  if (err) throw err;\n  console.log(\'file saved\');\n});\n
Run Code Online (Sandbox Code Playgroud)\n\n

希望这对其他人有帮助。

\n