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
472 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!

sumber:php.cn
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