recherche:windows:cp1252

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
recherche:windows:cp1252 [21/04/2020 22:18] piotrecherche:windows:cp1252 [04/06/2020 15:35] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Utiliser le même encodage dans windows (cp1252) et dans les consoles ====== ====== Utiliser le même encodage dans windows (cp1252) et dans les consoles ======
 +
 +<WRAP left round important 60%>
 +Ce qui suit nécessite d'être :
 +  * administrateur de sa machine et
 +  * sensibilisé aux difficultés d'intervention dans la base de registres.
 +</WRAP>
 +
 +<WRAP right round info 60%>
 +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-8((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'')), voir [[win-utf8]].
 +</WRAP>
 +
 +
 +<WRAP group>
 +<WRAP half column>
 ===== Problèmes ===== ===== Problèmes =====
  
-<WRAP center round box 80%>+<WRAP center round box 90%>
 ==== Incompatibilités d'encodage entre code source et fenêtre d'exécution ==== ==== Incompatibilités d'encodage entre code source et fenêtre d'exécution ====
 <html> <html>
 <p align="justify"> <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é par "défaut dans tous les fichier et applications qui tournent sous windows, 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 les consoles (appelées aussi terminaux ou fenêtres DOS... et que l'on obtient en tapant cmd dans ) 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 ont connu l'époque 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é !). 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.+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> </p>
 </html> </html>
 </WRAP> </WRAP>
  
-<WRAP center round box 80%>+<WRAP center round box 90%>
 ==== Divergence d'encodage au clavier ==== ==== Divergence d'encodage au clavier ====
 <html> <html>
 <p align="justify"> <p align="justify">
-L'encodage par défaut des consoles (cp850 par défaut) 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. 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.+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> </p>
 </html> </html>
 </WRAP> </WRAP>
  
-<html><br></html> 
  
 +</WRAP>
 +
 +<WRAP half column>
 ===== Solution ===== ===== Solution =====
  
-<WRAP center round box 80%>+<WRAP center round box 90%>
 <html> <html>
 <p align="justify"> <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>.+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> </p>
 </html> </html>
 +</WRAP>
  
 +<WRAP center round box 90%>
 === Méthode basique === === Méthode basique ===
  
-Il suffit pour cela de changer une clé de la base de registre. Plus précisément, dans le registre :+Il suffit pour cela de changer une clé de la base de registre 
 +  * dans le registre 
 ''HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage'', ''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. 
  
 +  * 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.
 +
 +</WRAP>
 +
 +<WRAP center round box 90%>
 === Méthode conseillée === === Méthode conseillée ===
  
-Une autre solution plus prudente, toujours en tant qu'administrateur est d'exécuter, +Une autre solution plus prudente, toujours en tant qu'administrateurest 
-''regedit /E cp1252.reg "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage"'', +  * 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 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"'', +  de modifier ''cp1252.reg'' (p. ex. avec le bloc-notes) en changeant ''"OEMCP"="850"'' en ''"OEMCP"="1252"'', 
-puis de lancer ''"regedit /s cp1252.reg"'' +  puis de lancer ''regedit /s cp1252.reg'' (ou double-clic sur le fichier ''cp1252.reg'') 
-et enfin de rebooter pour la prise en compte.+  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"''.+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''). 
 +</WRAP>
  
 +</WRAP>
 </WRAP> </WRAP>
  
 + --- //[[piot@emse.fr|David PIOT]] 21/04/2020 22:48//
  • recherche/windows/cp1252.1587500321.txt.gz
  • Dernière modification : 21/04/2020 22:18
  • de piot