recherche:windows:cp1252

Utiliser le même encodage dans windows (cp1252) et dans les consoles

Ce qui suit nécessite d'être :

  • administrateur de sa machine et
  • sensibilisé aux difficultés d'intervention dans la base de registres.

Ce qui suit concerne windows XP, windows 7 et windows 10. Dans le cas de windows 10, il est plutôt conseillé d'utiliser l'utf-81), voir win-utf8.

<html> <p align=“justify”> Par défaut, la version française de windows utilise l'encodage de caractères “<b>windows-1252</b>” (appelé aussi cp1252) pour afficher les caractères accentués. C'est cet encodage qui est utilisé dans tous les fichiers et applications qui tournent sous windows (sauf quand l'option existe, si un autre encodage a été explicitement demandé), ce qui est nécessaire pour la cohérence entre les fichiers et leur affichage sans avoir de conversion à réaliser. Par contre, ce n'est pas l'encodage qui est utilisé par défaut, dans la version française de windows, dans les consoles (appelées aussi terminaux ou fenêtres DOS… et que l'on obtient en tapant <samp>cmd</samp> dans la barre du menu “Démarrage”) et qui servent notamment à lancer des programmes et à gérer leurs affichages en sortie ; l'encodage utilisé dans ces consoles est le <b>cp850</b> qui correspond (pour ceux qui ont connu l'époque d'avant windows) avec l'encodage des caractères du DOS et qui est resté pour assurer la compatibilité avec de vieilles applications, la plupart en 16 bits (et qui ne fonctionnent même plus sous windows10, même en mode de compatibilité !). </p> <p align=“justify”> Cela a un inconvénient, les textes, notamment les messages à afficher à l'écran dans un code source, contenant des caractères accentués qui sont saisis dans une application windows (p. ex. le bloc-notes) sont encodées en 1252 (du moins par défaut) et sont mal affichés dans la console, notamment lors de l'exécution du code compilé, car traités comme s'ils avaient été encodés en cp850. </p> </html>

<html> <p align=“justify”> L'encodage par défaut des consoles (donc cp850 dans la version française, sauf changement par l'utilisateur) est aussi utilisé lors de la frappe au clavier, y compris dans les applications windows qui sont en cp1252 par défaut, lorsque l'on utilise la touche “Alt” + nombre pour écrire le caractère correspondant au nombre, ce qui peut-être surprenant. </p> <p align=“justify”> Par exemple, alors que le caractère “É” porte le numéro 201 dans l'encodage 1252, il faut taper Alt+144 pour le faire apparaître. En effet, 144 est le numéro de “É” dans l'encodage cp850 et ce dernier est l'encodage des consoles utilisé pour gérer le clavier, même si l'on est dans une application windows. </p> </html>

<html> <p align=“justify”> Dans une très large majorité des cas, le plus commode est d'utiliser le même encodage, et pour windows, et pour les consoles, et donc de changer l'encodage par défaut des consoles de <b>cp850</b> vers <b>cp1252</b>. </p> <p align=“justify”> Un préalable est nécessaire, en effet par défaut, les consoles sous win XP et 7 utilisent à l'affichage les “Polices Raster” qui n'affichent pas les caractères accentués. Ouvrir une console et cliquer avec le bouton droit sur la bande de titre de cette fenêtre puis ouvrir <samp>Propriétés</samp> dans le menu contextuel, aller dans l'onglet <samp>Polices</samp> et vérifier si “Polices Raster” est celle qui est activée. Dans ce cas, il faut changer la police par défaut ; pour cela, au dessus de <samp>Propriétés</samp> dans le menu, aller dans <samp>Par défaut</samp>, et choisir l'une des polices True Type (<i>a priori</i> choisir “Consolas” ou “Lucida Console” selon son goût). </p> </html>

Méthode basique

Il suffit pour cela de changer une clé de la base de registre :

  • dans le registre

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage,

  • il faut changer la valeur de la clé OEMCP de 850 à 1252.

En tant qu'administrateur, cela peut se faire manuellement, après avoir lancé regedit.

Penser à redémarrer windows pour la prise en compte de la nouvelle configuration.

Méthode conseillée

Une autre solution plus prudente, toujours en tant qu'administrateur, est :

  • d'exécuter, regedit /E cp1252.reg “HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage”,
  • de dupliquer le fichier cp1252.reg ainsi créé en cp1252.old pour sauvegarde,
  • de modifier cp1252.reg (p. ex. avec le bloc-notes) en changeant “OEMCP”=“850” en “OEMCP”=“1252”,
  • puis de lancer regedit /s cp1252.reg (ou double-clic sur le fichier cp1252.reg)
  • et enfin de redémarrer windows pour la prise en compte.

Pour faire marche arrière si besoin, il suffit :

  • de renommer cp1252.old en cp1252.reg et de
  • lancer regedit /s cp1252.reg (ou double-clic sur le fichier cp1252.reg).

David PIOT 21/04/2020 22:48


1)
sous windows XP et windows 7, il est possible de changer l'encodage en utf-8 en exécutant la commande chcp 65001 mais il n'est pas possible d'utiliser l'utf-8 comme OEMCP
  • recherche/windows/cp1252.txt
  • Dernière modification : 04/06/2020 15:35
  • de 127.0.0.1