Rumah > hujung hadapan web > tutorial js > Mengapakah `atob` Javascript gagal menyahkod rentetan base64 UTF-8 dengan betul?

Mengapakah `atob` Javascript gagal menyahkod rentetan base64 UTF-8 dengan betul?

DDD
Lepaskan: 2024-11-01 23:10:29
asal
613 orang telah melayarinya

Why does Javascript's `atob` fail to decode UTF-8 base64 strings properly?

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>
Salin selepas log masuk

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan