我有一个PHP脚本,可以将PNG图像编码为Base64字符串.
我想用JavaScript做同样的事情.我知道如何打开文件,但我不知道如何进行编码.我不习惯使用二进制数据.
我生成的CSV文件一旦生成就需要在Excel中打开和查看.Excel似乎需要与UTF-8不同的编码.
这是我的配置和生成代码:
csv_config = {col_sep: ";",
row_sep: "\n",
encoding: Encoding::UTF_8
}
csv_string = CSV.generate(csv_config) do |csv|
csv << ["Text a", "Text b", "Text æ", "Text ø", "Text å"]
end
Run Code Online (Sandbox Code Playgroud)
在Excel中打开时,特殊字符未正确显示:
Text a Text b Text æ Text ø Text å
Run Code Online (Sandbox Code Playgroud)
知道如何确保正确编码吗?
我已经能够编写JavaScript以使浏览器使用以下代码从远程服务器下载文件:
var iframe = document.createElement("iframe");
iframe.style.display = "none";
iframe.src = "filename.zip"
document.body.appendChild(iframe);
Run Code Online (Sandbox Code Playgroud)
哪个效果很好.但是,现在我有一个不同的情况,文件的内容存储在浏览器端的JavaScript中的字符串中,我需要触发该文件的下载.我试过用这个替换上面的第三行,其中'myFileContents'是包含文件实际字节的字符串:
iframe.src = "data:application/octet-stream;base64," + Base64.encode(myFileContents);
Run Code Online (Sandbox Code Playgroud)
这会导致文件下载,但文件名丢失.在Chrome中,文件名只是"下载".另外我读过一些浏览器版本允许的文件大小有限制.
有没有办法实现这个目标?使用JQuery就行了.该解决方案需要支持任何文件类型 - zip,pdf,csv,png,jpg,xls等...