Rumah > Artikel > hujung hadapan web > Mengapakah `atob` Javascript gagal menyahkod rentetan base64 UTF-8 dengan betul?
Menggunakan atob Javascript untuk menyahkod base64 tidak menyahkod rentetan utf-8 dengan betul
Atob Javascript boleh menyahkod rentetan base64 yang telah dikodkan dengan betul dengan aksara ASCII, sebagai contoh, window.atob('YQ==') akan mengembalikan aksara ASCII 'a'. Walau bagaimanapun, ia tidak akan menyahkod rentetan base64 dengan betul yang telah dikodkan dengan aksara Unicode UTF-8, contohnya, window.atob('4pyTIMOgIGxhIG1vZGU=') akan mengembalikan '⢠à la mode' dan bukannya '✓ à la mode' .
Untuk menyahkod rentetan base64 yang telah dikodkan dengan UTF-8 dengan betul, kita perlu menggunakan fungsi escape dan unescape. Dalam kes ini, window.atob(unescape(encodeURIComponent('✓ à la mode'))) akan mengembalikan '4pyTIMOgIGxhIG1vZGU=' dan window.atob('4pyTIMOgIGxhIG1vZGU=') akan mengembalikan '✓ à la mode'.
Pilihan lain untuk mengendalikan aliran masuk yang dikodkan base64 supaya ia dinyahkodkan sebagai utf-8 ialah menggunakan kelas TextDecoder. Kelas ini menyediakan cara untuk menyahkod rentetan berkod base64 ke rentetan UTF-8. Berikut ialah contoh cara menggunakannya:
<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>
Atas ialah kandungan terperinci Mengapakah `atob` Javascript gagal menyahkod rentetan base64 UTF-8 dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!