O uso do atob do Javascript para decodificar base64 não decodifica corretamente as strings utf-8
O atob do Javascript pode decodificar corretamente as strings base64 que foram codificadas com caracteres ASCII, por exemplo, window.atob('YQ==') retornará o caractere ASCII 'a'. No entanto, ele não decodificará corretamente strings base64 que foram codificadas com caracteres Unicode UTF-8, por exemplo, window.atob('4pyTIMOgIGxhIG1vZGU=') retornará '⢠à la mode' em vez de '✓ à la mode' .
Para decodificar corretamente uma string base64 que foi codificada com UTF-8, precisamos usar as funções escape e unescape. Neste caso, window.atob(unescape(encodeURIComponent('✓ à la mode'))) retornará '4pyTIMOgIGxhIG1vZGU=' e window.atob('4pyTIMOgIGxhIG1vZGU=') retornará '✓ à la mode'.
Outra opção para lidar com o fluxo de entrada codificado em base64 para que seja decodificado como utf-8 é usar a classe TextDecoder. Esta classe fornece uma maneira de decodificar uma string codificada em base64 em uma string UTF-8. Aqui está um exemplo de como usá-lo:
const text = '4pyTIMOgIGxhIG1vZGU=';
const decoder = new TextDecoder('utf-8');
const decodedText = decoder.decode(Uint8Array.from(atob(text)));
console.log(decodedText); // '✓ à la mode'
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3