Windows / Terminal 7 min de lecture 25 janvier 2025

chcp 65001: activer l’UTF-8 dans l’invite de commandes Windows

Accents illisibles, symboles � à la place des caractères, scripts qui sortent des octets bizarres… Sur Windows, ces symptômes viennent souvent de la page de codes de la console. chcp 65001 force l’UTF‑8 et résout la plupart des problèmes d’affichage et d’entrées/sorties texte.

Qu'est-ce que chcp 65001 ?

C’est la commande Windows qui passe la console en UTF‑8 (page de codes 65001), afin d’aligner les flux d’E/S sur un encodage moderne et interopérable.

Pour bien l’utiliser, gardez en tête ces notions clés :

1 Pages de codes Windows (OEM/ANSI)

CMD hérite souvent d’une page OEM (437/850), l’UI d’ANSI (1252). Elles diffèrent de l’UTF‑8.

chcp 850 (OEM), chcp 1252 (ANSI), chcp 65001 (UTF‑8)

2 Flux console et encodage

STDIN/STDOUT/STDERR doivent parler le même encodage que vos outils.

mode: UTF‑8 ↔ scripts (Node, Python, Git) ↔ terminal

3 UTF‑8 et compatibilité outils

La plupart des outils modernes supposent UTF‑8 par défaut.

Node, Python, Git, npm/yarn, cargo: mieux avec UTF‑8
Évitez les mélanges CP850/1252/UTF‑8
chcp 65001 + fichiers en UTF‑8
Police compatible (Cascadia, Consolas)

4 BOM, API Win32 et terminaux

UTF‑8 avec ou sans BOM, et comportement des API selon la console.

UTF‑8 sans BOM recommandé
Windows Terminal/ConHost/PowerShell: encodages distincts
Set-OutputEncoding / $OutputEncoding

Problèmes classiques

Copier-coller d’accents dans CMD

Sans chcp 65001, “é” devient “‚” ou “‚”/“√©” selon la page de codes.

Sorties de scripts illisibles

Node/Python affichent “é” au lieu de “é” si la console n’est pas en UTF‑8.

Redirections et pipelines

Des fichiers générés en CP850 se mélangent à des flux UTF‑8 et cassent votre traitement.

Logs ou tests incohérents

Comparaisons chaîne à chaîne faussées par des encodages divergents.

Exemple de problème courant :

# Sorties qui semblent identiques mais ne le sont pas
utf8 = "café"
cp850 = "café" # UTF‑8 rendu dans CP850
assert utf8 == cp850 # ❌ Échec

Symptômes qui doivent vous alerter

🚨 Signaux d'alarme

!
Git affiche des diffs de caractères accentués impossibles à lire dans le terminal
!
Un script imprime “è/é/’” au lieu des accents et apostrophes
!
Les redirections (> fichier.txt) produisent des fichiers illisibles
!
Votre éditeur montre bien “é”, mais pas la console Windows
!
Copier-coller une commande contenant des accents génère des erreurs

Comment les détecter

Solution recommandée : Clean ASCII

Clean ASCII vous aide à vérifier rapidement l’encodage visible de vos textes et à repérer des octets incohérents après passage en chcp 65001. Visualisez les points où l’UTF‑8 n’est pas respecté.

✅ Détection automatique

Accents cassés (mojibake), octets non UTF‑8, séquences ambiguës

📊 Analyse complète

Code points, positions, conseils pour unifier vers UTF‑8

🧹 Nettoyage automatique

Conversion sécurisée vers UTF‑8 et remplacement des octets hors plage

💾 Export propre

Téléchargement du texte prêt à l’usage en UTF‑8

Autres méthodes de détection

Affichage dans l'éditeur

Forcez l’encodage du fichier sur UTF‑8 (status bar VS Code/JetBrains)
Vérifiez que l’éditeur et la console affichent les mêmes caractères

En ligne de commande (Windows)

# Consulter la page de codes actuelle
chcp
# Passer en UTF‑8
chcp 65001
# PowerShell: forcer l’UTF‑8 pour les sorties
$OutputEncoding = [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
# Vérifier l’affichage d’un accent
echo café

En code

JavaScript

console.log("café"); // Assurez-vous que la console est en chcp 65001

Python

print("café") # Lancer dans une console en chcp 65001 pour un rendu correct

Excel / Google Sheets

Enregistrez/Exportez en UTF‑8 puis utilisez la console en chcp 65001 pour les imports/exports CSV

Nettoyer et prévenir

🚀 Solution rapide avec chcp 65001

Avant de corriger vos scripts, activez chcp 65001 pour unifier l’encodage. Testez ensuite vos sorties avec Clean ASCII pour confirmer l’UTF‑8.

Console UTF‑8 immédiate
Scripts plus lisibles
Fichiers exportés corrects

Méthodes techniques avancées

🔧 Normaliser

Utilisez UTF‑8 sans BOM pour vos fichiers source et CSV
Passez la console en chcp 65001 au démarrage (profile/shortcut)
Uniformisez les fins de ligne et encodages via .gitattributes/.editorconfig

🧹 Filtrer

Reconvertissez les fichiers CP1252/850 vers UTF‑8 si nécessaire
Réparez les séquences mojibake (ex: “é” → “é”) dans les pipelines
Bloquez les sorties non UTF‑8 lors d’exports automatisés

⚙️ Automatiser

Ajoutez chcp 65001 à vos profils (PowerShell $PROFILE, cmd autorun)
CI: échouez si des fichiers ne sont pas en UTF‑8
.editorconfig: charset = utf-8 pour l’ensemble du dépôt

Checklist rapide

Console en chcp 65001 (UTF‑8) par défaut
Fichiers sauvegardés en UTF‑8 sans BOM
Police du terminal compatible (accents, symboles)
Scripts/Tooling configurés pour émettre en UTF‑8
CI qui vérifie l’encodage des fichiers et des artefacts
Documentation équipe: usage de chcp 65001 et UTF‑8 partout

Conclusion

chcp 65001 met fin aux caractères illisibles dans la console Windows et simplifie vos flux texte.

Unifiez l’encodage sur UTF‑8 dans le terminal, vos scripts et vos fichiers: vous éliminez l’essentiel des soucis d’affichage et d’import/export.

Testez vos textes après chcp 65001

Utilisez notre outil pour confirmer que vos sorties et fichiers sont bien en UTF‑8 lisible.

Analyser mon texte UTF‑8