Problématique

Récemment en travaillant sur un autre billet de blog, en utilisant JShell sous une invite de commande DOS, j’ai exécuté du code avec des affichages de texte qui contenaient des caractères accentuées.

Cela donnait ce qui suit :

Affichage (par défaut) de caractères accentués dans jshell

Bref, ce n’est pas terrible, les caractères accentués ne sont pas correctement traduits même si c’est normal quand on y pense. En effet, l’encodage de caractère par défaut de l’invite de commandes n’est probablement pas adapté. Il faut donc voir s’il est possible de modifier cet encodage.

Solution

Après quelques recherches sur Internet, le moyen de changer cet encodage est d’utiliser la commande chcp:

  • pour changer vers de l’UTF-8 il faut exécuter chcp 65001.
  • pour changer vers du Windows 1252 il faut exécuter chcp 1252.
  • Pour changer vers du IBM850, il faut exécuter chcp 850

Après avoir utilisé chcp 65001 cela donne :

Affichage de caractères accentués dans jshell avant et après avoir utilisé chcp

La commande chcp sans paramètre permet de voir la page de code active dans l’invite de commande DOS. Cette commande fonctionne aussi dans une invite de commandes Powershell.