首頁 > web前端 > js教程 > 為什麼 Javascript 的 `atob` 無法正確解碼 UTF-8 base64 字串?

為什麼 Javascript 的 `atob` 無法正確解碼 UTF-8 base64 字串?

DDD
發布: 2024-11-01 23:10:29
原創
473 人瀏覽過

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

使用Javascript的atob解碼base64不能正確解碼utf-8字串

Javascript的atobbase可以正確解碼已經編碼的字串64對於ASCII 字符,例如window.atob('YQ==') 將返回ASCII 字符“a”。但是,它無法正確解碼使用UTF-8 Unicode 字元編碼的Base64 字串,例如window.atob('4pyTIMOgIGxhIG1vZGU=') 將返回'ââ la mode' 而不是'✓ à la mode' .

要正確解碼使用UTF-8 編碼的Base64 字串,我們需要使用escape 和unescape 函數。在這種情況下,window.atob(unescape(encodeURIComponent('✓ à la mode'))) 將返回 '4pyTIMOgIGxhIG1vZGU=' 並且 window.atob('4pyTIMOgIGxhIG1vZGU=') 將返回 '✓ à la mode'。

處理傳入的 base64 編碼流以便將其解碼為 utf-8 的另一個選項是使用 TextDecoder 類別。此類別提供了一種將 Base64 編碼的字串解碼為 UTF-8 字串的方法。以下是如何使用它的範例:

<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>
登入後複製

以上是為什麼 Javascript 的 `atob` 無法正確解碼 UTF-8 base64 字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板