如何在 JavaScript 中将 UTF8 字符编码为 Base64

How to encode UTF8 characters into Base64 in JavaScript

本文关键字:字符 编码 Base64 UTF8 中将 JavaScript      更新时间:2023-09-26

我在处理中文时尝试过这样做,但输出是乱码

var a = "你好";
undefined
a
"你好"
a = unescape(encodeURIComponent(a));
"ä½ å¥½"
a
"ä½ å¥½"

与处理英语相比:

var a = "Hello";
undefined
a
"Hello"
a = unescape(encodeURIComponent(a));
"Hello"

这是我的整个代码:

var content = $("div#test").html();
content = unescape(encodeURIComponent( content ));
content = window.btoa(content);
content = "data:image/svg+xml;filename:{{ request.session.access_token.uid }}.svg;base64," + content;

更新:

我正在尝试做的是将生成的 SVG 编码为数据 url 以供用户下载。我首先通过将 SVG 转换为画布(使用 CanVG)并使用 html2canvas 生成 base64 来解决这个问题......终于可以工作了...

尝试往返此操作,它工作正常:

decodeURIComponent(escape(window.atob(window.btoa(unescape(encodeURIComponent("‌​東京"))))))

某些中间结果是否看起来是乱码无关紧要。

其中一个评论中window.btoa(decodeURIComponent(escape(unescape(encodeURIComponent("東京")))))的问题在于调用不平衡且顺序不正确。