保留数据中的换行符:文本URI

时间:2013-07-08 17:49:12

标签: google-chrome-extension text-files data-uri

我的扩展程序中有一个按钮,触发以下代码:

chrome.tabs.create({url: 'data:text;base64,'+btoa(data), active:false});

这会触发我的字符串(数据)的下载,正如我预期的那样。不幸的是,它似乎正在剥离换行符。

我尝试过其他编码方法,包括utf-8和encodeUri()函数。我也尝试将mimetype切换为data:text/plain,但只是在新标签中打开(使用正确的换行符)而不是下载。

有没有办法对文字进行编码,以便保留换行符?如果没有,是否有不同的方法可以在浏览器中触发文件下载?

修改

我发现新行确实出现在一些文本编辑器中。以前,我使用的是notepad,它不能识别chrome中的换行符,但我的其他文本编辑器(记事本++)似乎确实认出了它们

2 个答案:

答案 0 :(得分:6)

我建议的解决方案是不使用记事本,因为它无法识别非Windows线路格式。如果您仍希望能够将记事本与输出结合使用,replace所有换行符(0x0A)都带有回车符+换行符对(0x0D 0x0A)。

chrome.tabs.create({
    url: 'data:text;base64,' + btoa(data.replace(/\n/g, '\r\n')),
    active: false
});

答案 1 :(得分:0)

对于所有试图在没有base64加密的数据URI中保留换行符的人: 这是不可能的,您必须使用base64编码。