当前位置: 首页 > 知识库问答 >
问题:

节点。js生成的csv文件显示英镑,表示英国镑符号(£)

赖杰
2023-03-14

我正在使用这个json2scv包解析我的数据(下面的代码中描述了json数据示例)

我正在尝试使用下面的代码在我的nodejs应用程序中生成一个CSV文件:

如果我在Excel中打开该文件,那么无论什么地方出现符号,我都会得到。

var json2csv = require('json2csv');
var fs = require('fs');
var fields = ['car', 'price', 'color'];
var myCars = [
  {
    "car": "Audi",
    "price": "£40000",
    "color": "blue"
  }, {
    "car": "BMW",
    "price": "£35000",
    "color": "black"
  }, {
    "car": "Porsche",
    "price": "£60000",
    "color": "green"
  }
];
var csvStr = json2csv({ data: myCars, fields: fields, del: ',' });

fs.writeFile('file.csv', csvStr, { encoding: 'utf8' },function(err) {
  if (err) throw err;
  console.log('file saved');
});

有什么想法吗?

谢谢

共有2个答案

杜英叡
2023-03-14

2022年答案

(使用changed),从json2csv库调用解析器类

const { Parser } = require('json2csv');

const myCars = [
  {
    "car": "Audi",
    "price": 40000,
    "color": "blue"
  }, {
    "car": "BMW",
    "price": 35000,
    "color": "black"
  }, {
    "car": "Porsche",
    "price": 60000,
    "color": "green"
  }
];

const json2csvParser = new Parser();
const csv = json2csvParser.parse(myCars);

console.log(csv);

使用删除器:

const json2csvParser = new Parser({ delimiter: '\t' });
const tsv = json2csvParser.parse(myCars);

带字段

const fields = ['carModel', 'price', 'colors'];
const json2csvParser = new Parser({ fields, transforms });
const csv = json2csvParser.parse(myCars);

这里有更多的eample

苏高远
2023-03-14

我从这个答案中得到了解决方案,它是问题线程:https://stackoverflow.com/a/27975629/5228251

UTF-8示例:

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

UTF-16 Little Endian示例:

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

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

  • 将delimeter选项改为“\t”,而不是”,“
  • 在csv字符串前面加上“\ufeff”
  • 将编码更改为使用“utf16le”而不是“utf8”

以下是我的更新代码:

var json2csv = require('json2csv');
var fs = require('fs');
var fields = ['car', 'price', 'color'];
var myCars = [
  {
    "car": "Audi",
    "price": "£40000",
    "color": "blue"
  }, {
    "car": "BMW",
    "price": "£35000",
    "color": "black"
  }, {
    "car": "Porsche",
    "price": "£60000",
    "color": "green"
  }
];
var csvStr = json2csv({ data: myCars, fields: fields, del: '\t' });

fs.writeFile('file.csv', '\ufeff' + csvStr, { encoding: 'utf16le' },function(err) {
  if (err) throw err;
  console.log('file saved');
});

希望这对其他人有所帮助。

 类似资料:
  • 我有一个货币问题与贝宝沙箱。 我正在使用沙箱(数字商品、快速结账)测试我的站点的定期付款 一切都按预期进行。 用户点击支付。 用户被转移到paypal express签出登录。 paypal登录屏幕以正确的货币显示正确的金额,例如10英镑 用户登录(验证事务) 付款成功,用户返回我们的网站。 可爱。这一切都和我预期的一样。 然而,当我登录商家沙盒帐户检查活动时,我的测试用户所做的所有xx支付现在都

  • CSV文件包含欧元的价格,比如,但是当我打开CSV文件时,Excel不会正确显示欧元符号。 我从Oracle数据库读取数据,将CSV文件内容存储在

  • 最近我开始使用node。js。当我在我的一个项目中完成一个需求时,我面临一个问题,我应该能够将一些数据动态写入csv文件,并让它作为弹出窗口提示用户下载(如我们通常看到的,带有保存和取消选项)。在谷歌搜索了一段时间后,我决定使用csv npm模块https://github.com/wdavidw/node-csv-parser.我能够将数据写入文件并使用此模块进行保存。我想提示一个弹出窗口来保存

  • 我使用下面的代码强制我的textview以英文数字显示其文本数字:

  • 我正在将一个包含一些数字(全部用波斯语)的字符串加载到android文本视图中。一切都很好,直到我改变了我的自定义字体,文本的数字显示为英文数字。 我知道我的新字体支持波斯语数字。当我使用正确显示的数字下方的代码更改数字区域设置时。 问题是我有一个字符串,很难找到数字部分并改变它。我以前的字体工作正常,我不明白这个字体有什么问题。 你知道如何全局解决所有文本视图,或者至少一个字符串的问题吗?

  • 本文向大家介绍利用PHP生成CSV文件简单示例,包括了利用PHP生成CSV文件简单示例的使用技巧和注意事项,需要的朋友参考一下 前言 csv 文件其实和excel文件一样,都是表格类型.但PHP生成csv要比生成excel文件要简单的多,生成csv文件其实就是把以 , 号为分割符的字符串存成 .csv为扩展名的文件。 因为逻辑不难,具体请看下面的代码和注释。 效果: 根目录下生成的test.csv