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

时间:2013-01-26 09:15:26

标签: javascript encoding utf-8 base64

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

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转换为canvas(使用CanVG)并使用html2canvas生成base64来解决这个问题...最后它可以工作......

1 个答案:

答案 0 :(得分:3)

尝试往返这个,它运行正常:

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

某些中间结果是否显示为乱码是不相关的。

其中一条评论中window.btoa(decodeURIComponent(escape(unescape(encodeURIComponent("東京")))))的问题是调用不均衡,而且顺序不正确。

相关问题