」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 Javascript 的 `atob` 無法正確解碼 UTF-8 base64 字串?

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

發佈於2024-11-09
瀏覽:453

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

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

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

mode' 而不是'✓ à la mode' .

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

const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'

const text = '4pyTIMOgIGxhIG1vZGU='; const 解碼器 = new TextDecoder('utf-8'); const解碼文字=解碼器.解碼(Uint8Array.from(atob(text))); console.log(decodedText); // '✓ à la 模式'Why does Javascript\'s `atob` fail to decode UTF-8 base64 strings properly?

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3