Maison > Article > interface Web > Pourquoi « atob » de Javascript ne parvient-il pas à décoder correctement les chaînes UTF-8 base64 ?
L'utilisation de l'atob de Javascript pour décoder la base64 ne décode pas correctement les chaînes utf-8
L'atob de Javascript peut décoder correctement les chaînes base64 qui ont été codées avec des caractères ASCII, par exemple, window.atob('YQ==') renverra le Caractère ASCII 'a'. Cependant, il ne décodera pas correctement les chaînes base64 qui ont été codées avec des caractères Unicode UTF-8. Par exemple, window.atob('4pyTIMOgIGxhIG1vZGU=') renverra « ⢠à la mode » au lieu de « ✓ à la mode ». .
Pour décoder correctement une chaîne base64 qui a été codée avec UTF-8, nous devons utiliser les fonctions escape et unscape fonctions. Dans ce cas, window.atob(unescape(encodeURIComponent('✓ à la mode'))) renverra '4pyTIMOgIGxhIG1vZGU=' et window.atob('4pyTIMOgIGxhIG1vZGU=') renverra '✓ à la mode'.
Une autre option pour gérer le flux entrant encodé en base64 afin qu'il soit décodé comme utf-8 consiste à utiliser la classe TextDecoder. Cette classe fournit un moyen de décoder une chaîne codée en base64 en une chaîne UTF-8. Voici un exemple de comment l'utiliser :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!