La méthode WindowOrWorkerGlobalScope.btoa() crée une chaîne ASCII codée en base 64 à partir d'un objet String dans lequel chaque caractère de la chaîne est traité comme un octet de données binaires.

Note : étant donné que cette fonction traite chaque caractère comme un octet de données binaires, quel que soit le nombre d'octets composant le caractère, une exception InvalidCharacterError est déclenchée si le code point d'un caractère quelconque est en dehors de la plage 0x00 à 0xFF. Voir Chaînes Unicode pour un exemple montrant comment encoder des chaînes avec des caractères en dehors de la plage 0x00 à 0xFF.

Syntaxe

var donneesEncodees = scope.btoa(chaineAEncoder);

Paramètres

chaineAEncoder
Une chaîne dont les caractères représentent chacun un octet unique de données binaires à encoder en ASCII.

Valeur retournée

Une chaîne contenant la représentation Base64 de la chaineAEncoder.

Exceptions

Exemple

var donneesEncodees = window.btoa('Salut, monde'); // encode une chaîne
var donneesDecodees = window.atob(donneesEncodees); // décode la chaîne

Notes

Vous pouvez utiliser cette méthode pour encoder des données qui, autrement, pourraient engendrer des problèmes de communication, les transmettre et utiliser alors la méthode atob() pour décoder les données à nouveau. Par exemple, vous pouvez encoder des caractères de contrôle tels que les valeurs ASCII de 0 à 31.

btoa() est également disponible pour les composants XPCOM implémentés en JavaScript, même si {domxref("Window")}} n'est pas l'objet global dans les composants.

Chaînes Unicode

Dans la plupart des navigateurs, l'appel de btoa() sur une chaîne Unicode engendrera une exception InvalidCharacterError.

Une option est d'échapper tous les caractères étendus, de telle sorte que la chaîne que vous voulez en fait encoder soit une représentation ASCII de l'original. Voyez cet exemple, noté par Johan Sundström :

// Chaîne ucs-2 en ascii encodé en base64
function uena(chn) {
    return window.btoa(unescape(encodeURIComponent(chn)));
}
// Ascii encodé en base64 en chaîne ucs-2
function aenu(chn) {
    return decodeURIComponent(escape(window.atob(chn)));
}
// Usage :
uena('✓ à la mode'); // 4pyTIMOgIGxhIG1vZGU=
aenu('4pyTIMOgIGxhIG1vZGU='); // "✓ à la mode"

uena('I \u2661 Unicode!'); // SSDimaEgVW5pY29kZSE=
aenu('SSDimaEgVW5pY29kZSE='); // "I ♡ Unicode!"

Une solution meilleure, plus fiable et moins coûteuse consiste à utiliser des tableaux typés pour faire la conversion.

Spécifications

Spécification Statut Commentaire
HTML Living Standard
La définition de 'WindowOrWorkerGlobalScope.btoa()' dans cette spécification.
Standard évolutif Méthode déplacée dans le mixin WindowOrWorkerGlobalScope dans la spéc la plus récente.
HTML Living Standard
La définition de 'WindowBase64.btoa()' dans cette spécification.
Standard évolutif Pas de changement depuis le dernier instantané, HTML 5.1.
HTML 5.1
La définition de 'WindowBase64.btoa()' dans cette spécification.
Recommendation Instantané de HTML Living Standard. Pas de changement.
HTML5
La définition de 'WindowBase64.btoa()' dans cette spécification.
Recommendation Instantané de HTML Living Standard. Création de WindowBase64 (les propriétés se trouvaient sur la cible avant cela).

Compatibilité des navigateurs

Fonctionnalité Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Support de base (Oui) (Oui) 1.0 (1.7 ou moins)[1]
52 (52)[2]
10 (Oui) (Oui)
Fonctionnalité Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support de base (Oui) (Oui) 1.0 (1)
52.0 (52)
Pas de support ? (Oui)

[1] btoa() est aussi pour les composants XPCOM implémentés en JavaScript, même si window n'est pas l'objet global dans les composants.

[2] btoa() maintenant défini dans le mixin WindowOrWorkerGlobalScope.

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : NemoNobobyPersonne, teoli, lovasoa, fscholz, jsx, e7d, Mgjbot, BenoitL, Celelibi
 Dernière mise à jour par : NemoNobobyPersonne,