Wie encode-UTF8-Zeichen in Base64-in JavaScript
Ich habe versucht, wie dies beim Umgang mit Chinesen, aber die Ausgabe ist chaotisch-code verstümmelt:
var a = "你好";
undefined
a
"你好"
a = unescape(encodeURIComponent(a));
"ä½ å¥½"
a
"ä½ å¥½"
im Vergleich zum Umgang mit Englisch:
var a = "Hello";
undefined
a
"Hello"
a = unescape(encodeURIComponent(a));
"Hello"
Hier ist mein ganzer code:
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;
AKTUALISIERT:
Was ich versuche zu tun, ist die Codierung ein generiertes SVG als data-url für Benutzer zum herunterladen. Ich löste dieses problem durch die Konvertierung von SVG-zu-Leinwand (mit CanVG) ersten und nutzen html2canvas zu generieren base64 ... endlich funktioniert es ...
- Was ist Ihr input und was brauchst du als Ausgabe?
- wie ist Ihre Ausgabe im Zusammenhang mit dem code?
- Was meinst du mit "der Ausgang ist chaotisch-code"?
- siehe developer.mozilla.org/en-US/docs/DOM/window.btoa
- Deins funktioniert nicht mit chinesischen Zeichen. Durch die Kodierung und Dekodierung von "你好", erhalten Sie "ä½ å¥½", das ist das problem des OP ist.
- es ist nicht "meins" für den Anfang. Von was ich sehen kann, beide Funktionen auf, die Seite funktioniert gut für den OP-Eingang.
- Ok. Es ist nicht "deins", aber ich lief einfach in die Konsole und es funktioniert nicht für "你好".
- Es bedeutet nicht erkennbaren Zeichen, die durch falsche Codierung.
- Versuchen Integration, und Sie werden sehen, es funktioniert:
decodeURIComponent(escape(unescape(encodeURIComponent("東京")))) "東京"
dachte sogar das Zwischenergebnis sieht aus wie lustige Charaktere-denn es IST lustig Zeichen. - Ich ausführen: Fenster.btoa(decodeURIComponent(escape(unescape(alsterrunde("东京"))))) auf Chrome 24, got error: Fehler: INVALID_CHARACTER_ERR: DOM Exception 5
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, Integration, und es funktioniert gut:
Ob oder nicht irgendein Zwischenergebnis erscheint verstümmelt werden, ist nicht relevant.
Das problem mit der
window.btoa(decodeURIComponent(escape(unescape(encodeURIComponent("東京")))))
in einer der Kommentare, die Aufrufe sind nicht ausgeglichen und nicht in der richtigen Reihenfolge.