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

Javascript导出CSV编码utf-8问题

任伟
2023-03-14

我需要导出javascript数组到CSV文件和下载。我这么做了,但是'ó,ü,ö,ó,ş'这些字符在CSV文件中看起来像'\\\\\\\\\\\'。我已经尝试了这个网站上推荐的许多解决方案,但对我不起作用。

我添加了我的代码片段,有人能解决这个问题吗?

var csvString = 'ı,ü,ö,ğ,ş';

var a = window.document.createElement('a');
a.setAttribute('href', 'data:text/csv; charset=utf-8,' + encodeURIComponent(csvString));
a.setAttribute('download', 'example.csv');
a.click();

共有1个答案

汲睿
2023-03-14

这取决于打开example.csv文件的程序。使用文本编辑器,编码将是UTF-8,字符不会出现格式错误。但是使用ExcelCSV的默认编码是ANSI,而不是UTF-8。因此,如果不强制Excel使用不是ANSI,而是UTF-8作为编码,字符的格式将是错误的。

Excel可以使用UTF-8强制执行CSV,并将BOM(字节顺序标记)作为文件中的第一个字符。UTF-8的默认BOM是字节序列0xef,0xbb,0xbf。因此,可以认为简单地将“\xef\xbb\xbf”作为字符串的第一个字节将是解决方案。但这肯定太简单了,不是吗?问题是如何强制JavaScript不将这些字节作为字符。“解决方案”是使用特殊字符(JavaScript)中提到的“通用BOM”“\ufeff”

示例:

var csvString = 'ı,ü,ü,ğ,ş,#Hashtag,ä,ö';
var universalBOM = "\uFEFF";
var a = window.document.createElement('a');
a.setAttribute('href', 'data:text/csv; charset=utf-8,' + encodeURIComponent(universalBOM+csvString));
a.setAttribute('download', 'example.csv');
window.document.body.appendChild(a);
a.click();
 类似资料:
  • 我一直在读很多帖子,包括这篇 Javascript导出CSV编码utf-8问题 我知道很多人提到这是因为microsoft excel,使用这样的东西应该是可行的 https://superuser.com/questions/280603/how-to-set-character-encoding-when-opening-excel 我在ubuntu(它甚至没有任何问题)上试过,在window

  • 我需要将javascript数组导出到excel文件并下载它,我正在此代码中执行此操作。数据是一个脚本对象数组。 所有这些都很好,直到我有了非英语字符的字符串属性,比如西班牙语、阿拉伯语或希伯来语。如何使用所有这些非ASCII值进行导出?

  • 我想知道是否有人能帮忙,我很难将UTF-8字符发布到SagePay。数据库是MySQL,带有数据库字符集utf8和数据库排序规则utf8_general_ci。数据库连接字符串使用useUnicode=true 所有发布到数据库的数据都存储为UTF-8,所有查询的数据都显示为UTF-8,但当字符串编码如下时: 然后发到SagePay,他们会收到一个来自国际字符所在位置的乱码字符串。如果字符串中不包

  • 我有一个。csv文件,以西班牙语编写,因此它具有特殊字符,如ñ,á,é,í,ó,ú。因此,如果我在记事本中打开它,我可以看到所有正确书写的字符,并且我已经用UTF-8编码保存了文件。但是,当我打开RStudio并使用以下方式导入数据时: 我得到了所有数据集,但编码不正确,即: 应包括以下内容: 我已经尝试了所有的方法,我不知道还能做什么,因为我已经检查过R是否使用UTF-8编码,文件是否以相同的方

  • 我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组, 我正在将其转换为UTF-8字符串并返回字节数组, 据我所知,这是一个3字节的数组。正当但这是我得到的。 这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。 这也是一个更大问题的一部分。

  • 问题内容: 使用UTF-8编码创建字符串时存在不一致的地方。 运行此代码: 在Java 1.8.0_20(及更早版本)上,我们得到结果 在Java 1.7和1.6上,我们得到正确的结果: 您遇到此错误了吗?有没有解决方法? 对于Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208来说,这种不一致也很明显,但显