【问题标题】:Newline characters in CSV Data URI not showing upCSV 数据 URI 中的换行符未显示
【发布时间】:2015-05-20 07:24:15
【问题描述】:

我有一个 CSV 数据

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

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

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

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

事实上维基说

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

This another question,如果我没有误会的话,确实说过这是可能的。

是否真的不可能以 Data URI 格式下载 CSV 换行符,或者有没有我可能错过的方法?

【问题讨论】:

    标签: csv newline data-uri


    【解决方案1】:

    很久以前提出的好问题 :) 我今天也遇到了这个问题。对我来说,如果我对 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;
    

    【讨论】:

    • 就像使用 encodeURI(...) 一样,可以将 CSV 编码为 base64: ```` var data = btoa(data);链接.href =“数据:文本/纯文本;base64,”+数据; ````
    猜你喜欢
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-08
    • 2015-03-23
    • 1970-01-01
    相关资源
    最近更新 更多