使用javascript导出CSV时,重音字母未正确显示
Accented letters not showing properly when exporting CSV using javascript
我正在我的网站上导出为CSV功能。数据是西班牙语的,所以里面会有很多重音字符,这个问题的一个例子是标题"Año"(年),但在 excel 上它显示为"Año"。
这是我使用 javascript 的导出代码:
.HTML
<a href="#" class="btn" id="export-btn"> Export</a>
<a href="#" class="btn" id="download" style="display:none"> Download Now </a>
.JS
$(document).on('click', '#export-btn', function(e) {
var _this = $(this);
_this.attr('disabled',true);
var datenow = new Date();
datenow = datenow.getTime();
var exportdata = ConvertToCSV(exportdata);
$('#download').attr("href", "data:text/csv;charset=utf8," + encodeURIComponent(exportdata) );
$('#download').attr("download", "InTrack-Report-"+datenow+".csv");
$('#download').show(); //show download button
_this.attr('disabled',false);
});
这是 转换到 CSV 函数,我添加了sep=;
以使 excel 将分号识别为分隔符。
function ConvertToCSV(objArray) {
var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
var str = 'sep=;'r'n'; //tell excel that we used semicolon as separator
//header
var line = '';
for (var i = 0; i < array.Fields.length; i++) {
if (line != '') line += ';'
line += array.Fields[i]['Title'];
}
str += line + ''r'n';
//rows
for (var i = 0; i < array.Rows.length; i++) {
var line = '';
for (var index in array.Rows[i]) {
if (line != '') line += ';'
line += array.Rows[i][index];
}
str += line + ''r'n';
}
return str;
}
更新:我找到了一种按照此处的解决方案正确显示重音字母的方法。但是我不得不删除
sep=;
这很重要,因为它用分号分隔我的数据。有没有办法在顶部同时添加 BOM 和sep=;
?如果是这样,如何?因为似乎我只能使用一个。所以
str='sep=;'r'n'
而是str=''uFEFF sep=;'r'n'
如果在创建 file.csv 时遇到 ASCII 错误,请尝试先添加 BOM。
var BOM = "'uFEFF";
return BOM + str;
然后用数据将文件头装箱:"text/csv;charset=utf-8"而不是 UTF8(不带 - )
在 encodeURI 的位置使用 escape 并在字符串前添加 "sep=;'" 并允许它进行转义
示例代码
var csvString = "sep=;'n" + csvRows.join("'n");
var a = document.createElement('a');
a.href = 'data:attachment/csv;charset=UTF-8,%EF%BB%BF' + escape(csvString);
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 无法导出函数expressjs/requestjs中的变量
- 如何在生成下载文件时显示加载动画
- Pandoc将HTML导出到带有CSS显示的Word:没有不起作用
- 如何在导出 excel 时显示加载(处理)
- JQuery 数据表延迟加载导出数据到 pdf、excel 等,不显示所有记录
- 从 HTML 表导出为 excel 显示带有标记的所有表内容
- 使用Javascript导出CSV并显示进度条
- HighChart中的多个图表导出与屏幕上显示的不同
- jquerydatatable表工具导出到excel并没有显示文件中的表数据
- 融合图表显示导出对话框未显示在javascript中
- Highcharts导出:运行时渲染不显示渲染表
- 使用导出工具时,显示条目下拉菜单消失
- 将HTML表导出为XLS时不显示特殊字符
- 显示XSL和PDF导出以及允许我们选择要显示的行数的下拉列表
- 表头不显示在导出的PDF/EXCEL,如果我在数据表中使用列搜索选项
- jQuery导出的文件在Excel中打开时显示错误
- 使用javascript导出CSV时,重音字母未正确显示
- 数据表导出按钮未显示,