使用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 模式'
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3