CSV数据URI中的换行符未显示

时间:2015-03-17 17:53:24

标签: csv newline data-uri

我有CSV数据

column1,column2,column3
data1,data2,data3
data1,data2,data3

我将它作为一个Jade变量,它与HTML中的整数插值字符串一样好,我可以通过数据URI格式的a链接下载

var link = document.getElementById('link');
var data = 'column1,column2,column3\n\rdata1,data2,data3\n\rdata1,data2,data3';
link.href = 'data:text/csv,' + data;
<a id="link" download="data.csv">download</a>

我已经使用Javascript在这里插入数据用于演示,但我实际上在服务器端使用Jade :(我认为这不会有任何不同......)

a(href="data:text/csv,#{data.replace(/[\r\n]/, '\r\n')}" download="data.csv") Download

问题是换行符不起作用。当我下载文件时,它没有换行符。

实际上wiki说

  

In Mozilla Firefox 5, Google Chrome 17, and IE 9 (released June, 2011), encoded data must not contain newlines.

This another question,如果我没有误解,请说明这是可能的。

是否真的无法以数据URI格式提供CSV下载换行符,还是有可能错过的方式?

1 个答案:

答案 0 :(得分:0)

很久以前问的一个很好的问题:)我今天也遇到了这个问题。对我来说,如果我对CSV进行URL编码,则可以使用。这样换行符“ \ n”和/或“ \ r”就变成了“%0A”和“%0D”

var link = document.getElementById('link');
var data = 'column1,column2,column3\n\rdata1,data2,data3\n\rdata1,data2,data3';
data = encodeURI(data);
link.href = 'data:text/csv,' + data;