我以这种方式使用JavaScript触发HTML文件下载:
var pom = document.createElement('a');
pom.setAttribute('href', 'data:application/octet-stream;charset=utf-8,' + encodeURIComponent(htmlContent));
pom.setAttribute('download', 'download.html');
pom.click();
这样可以正常工作,但如果在htmlContent
中有é,í,ó,ú等重音字符,则下载的文档不会正确显示(它们被奇怪的符号替换)。
如何仅使用JavaScript触发具有此类特殊字符的文本的文件下载?
答案 0 :(得分:0)
一种方法是HTML-escape任何extended-ascii字符(代码大于127)。
我已经使用Lo-Dash将原始字符串转换为数组,并根据需要将数组映射到HTML转义字符 - 您可以按照自己的意愿执行此操作。
var htmlContent = "é, í, ó, ú, etc.";
htmlContent = _.map(_.toArray(htmlContent), function (char) {
var code = char.charCodeAt(0);
if (code > 128) { return "&#" + code + ";"; }
return char;
}).join("");
var pom = document.createElement('a');
pom.setAttribute('href', 'data:application/octet-stream;charset=utf-8,' + encodeURIComponent(htmlContent));
pom.setAttribute('download', 'download.html');
pom.click();