Qu’est‑ce que base64 et UTF‑8 ?
UTF‑8 convertit des caractères en octets. Base64 convertit des octets en texte ASCII sûr. Mélanger leur rôle ou l’ordre des opérations produit des bugs subtils.
Voici les notions essentielles à connaître :
1 UTF‑8 en bref
Encodage variable (1 à 4 octets) couvrant tout Unicode, rétro‑compatible ASCII.
2 Base64 en bref
Représentation texte d’octets, utilise 64 symboles + signe "=" pour le padding.
3 Variantes et options Base64
Les différences qui cassent l’interopérabilité :
4 Éléments techniques influents
Ce qui modifie les résultats sans s’en rendre compte :
Problèmes classiques
btoa/atob sur du texte Unicode
Dans le navigateur, btoa/atob attend un binaire Latin‑1. Sans TextEncoder, les caractères non‑ASCII cassent.
Tests unitaires incohérents entre environnements
Node Buffer vs navigateur, base64url vs standard, fin de ligne MIME: les sorties ne correspondent plus.
Padding et retours à la ligne
"Incorrect padding" ou erreurs de décodage à cause de "=" manquants/extras ou de lignes coupées.
Mauvais encodage d’entrée
Chaîne initiale en Latin‑1 alors que vous pensez UTF‑8: le base64 ne sera pas identique.
Exemple de problème courant :
Symptômes qui doivent vous alerter
🚨 Signaux d'alarme
Comment les détecter
✨ Solution recommandée : Clean ASCII
Clean ASCII permet d’inspecter vos chaînes, voir les octets réels UTF‑8 et repérer ce qui perturbe vos encodages base64. Collez votre texte, vérifiez les octets, encodez/décodez proprement et évitez les doubles conversions.
✅ Détection automatique
BOM, octets invalides, retours à la ligne, padding manquant/excessif
📊 Analyse complète
Aperçu UTF‑8, base64 standard et base64url, longueurs et blocs
🧹 Conversion fiable
Chaîne → UTF‑8 → base64 et l’inverse, sans perte ni corruption
💾 Export propre
Résultats prêts pour API, JWT, data URI, stockage
Autres méthodes de détection
Affichage dans l'éditeur
En ligne de commande (Unix)
En code
JavaScript
const dec = new TextDecoder('utf-8');
const b64 = btoa(String.fromCharCode(...enc.encode(str)));
const s = dec.decode(Uint8Array.from(atob(b64), c => c.charCodeAt(0)));
Python
b64 = base64.b64encode(s.encode('utf-8')).decode('ascii')
s2 = base64.b64decode(b64).decode('utf-8')
Excel / Google Sheets
Utilities.base64Encode(Utilities.newBlob(str, 'text/plain; charset=UTF-8').getBytes())
# Power Query (Excel M)
Binary.ToText(Text.ToBinary(str, TextEncoding.Utf8), BinaryEncoding.Base64)
Nettoyer et prévenir
🚀 Solution rapide avec Clean ASCII
Avant d’écrire des scripts, vérifiez en un clic votre texte, ses octets UTF‑8 et la sortie base64 pour un envoi sûr.
Méthodes techniques avancées
🔧 Normaliser
🧹 Filtrer
toBase64Utf8() et fromBase64Utf8()
⚙️ Automatiser
Checklist rapide
Conclusion
Base64 n’est pas un encodage de caractères, c’est un emballage d’octets. UTF‑8 convertit vos caractères en octets. En respectant cet ordre et la variante adéquate, vous évitez les erreurs récurrentes.
Standardisez UTF‑8, choisissez votre base64 (standard/url‑safe), contrôlez le padding et automatisez les vérifications. Vos échanges deviennent fiables.
Maîtrisez base64 et UTF‑8 maintenant
Utilisez notre outil pour analyser les octets, encoder proprement et fiabiliser vos flux.
Analyser/encoder mon texte