Heim > Artikel > Web-Frontend > Warum kann „atob“ von Javascript UTF-8-Base64-Strings nicht richtig dekodieren?
Die Verwendung von Javascripts ATOB zum Dekodieren von Base64 dekodiert UTF-8-Zeichenfolgen nicht ordnungsgemäß.
Javascripts ATOB kann kodierte Base64-Zeichenfolgen ordnungsgemäß dekodieren Bei ASCII-Zeichen gibt window.atob('YQ==') beispielsweise das ASCII-Zeichen 'a' zurück. Base64-Zeichenfolgen, die mit UTF-8-Unicode-Zeichen codiert wurden, werden jedoch nicht richtig dekodiert. Beispielsweise gibt window.atob('4pyTIMOgIGxhIG1vZGU=') „⢠à la mode“ anstelle von „ ✓ à la mode“ zurück. .
Um einen Base64-String, der mit UTF-8 codiert wurde, richtig zu dekodieren, müssen wir die Escape- und Unescape-Funktionen verwenden. In diesem Fall gibt window.atob(unescape(encodeURIComponent(' ✓ à la mode'))) '4pyTIMOgIGxhIG1vZGU=' zurück und window.atob('4pyTIMOgIGxhIG1vZGU=') gibt ' ✓ à la mode' zurück.
Eine weitere Möglichkeit, den eingehenden Base64-codierten Stream so zu verarbeiten, dass er als utf-8 decodiert wird, ist die Verwendung der TextDecoder-Klasse. Diese Klasse bietet eine Möglichkeit, eine Base64-codierte Zeichenfolge in eine UTF-8-Zeichenfolge zu dekodieren. Hier ist ein Beispiel für die Verwendung:
<code class="javascript">const text = '4pyTIMOgIGxhIG1vZGU='; const decoder = new TextDecoder('utf-8'); const decodedText = decoder.decode(Uint8Array.from(atob(text))); console.log(decodedText); // '✓ à la mode'</code>
Das obige ist der detaillierte Inhalt vonWarum kann „atob“ von Javascript UTF-8-Base64-Strings nicht richtig dekodieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!