2004-01-20

Charset des fenêtres console sous Windows

Une personne est arrivée sur mon site en faisant une recherche de « afficher latin-1 console windows ». Effectivement il y a tous ces mots sur mon site, malheureusement je ne réponds pas à la question. Je vous livre donc quelques petites explications et le truc pour y arriver, d'autant plus que j'ai mis plusieurs années avant de comprendre :) (les linuxiens vont bien se marrer encore une fois :))

Quand on lance une fenêtre console sous un Windows occidental, une vraie, à l'aide de la commande « cmd » (par exemple via le menu Démarrer / Exécuter), cette fenêtre utilise l'encodage OEM, un vieux charset des familles différent de celui utilisé ailleurs dans Windows, à savoir le charset windows-1252.

De ce fait, les chaines écrites en windows-1252 ne donnent pas de très bon résultats une fois affichées dans la fenêtre console (par exemple un printf d'un programme C++, ou l'affichage d'un fichier dans la console).

Pour changer ce comportement, voici les étapes à suivre :

  • exécutez cmd ;
  • allez dans Propriétés / Police ;
  • choisissez la police de caractères « Lucida Console » qui est compatible windows-1252 ;
  • validez et enregistrez définitivement les changements ;
  • si vous souhaitez activer le windows-1252 depuis la console, exécutez la commande « chcp 1252 » ;
  • si vous souhaitez activer le windows-1252 depuis un programme C++, mettez en début de votre programme un appel à SetConsoleOutputCP(1252).

Voilà, vous savez désormais comment rendre cohérent l'affichage des fenêtres console avec le reste de l'interface Windows. Comme le windows-1252 englobe le charset latin-1, vous pourrez aussi afficher du latin-1 sans problème ^^