49 votes

Existe-t-il un shell de commande Windows qui affiche les caractères Unicode ?

En supposant que j'ai installé des polices contenant les glyphes appropriés, existe-t-il un shell de commande pour Windows XP qui affiche les caractères Unicode ? Au minimum, deux choses qui devraient afficher correctement l'Unicode :

  • Listes de répertoires. Je me moque de ce que je dois taper (dir, ls, get-childitem, etc.), tant que les fichiers dont le nom contient des caractères Unicode apparaissent avec les bons glyphes, et non dans la case des caractères non imprimables.
  • Listes de contenu de fichiers texte. Encore une fois, peu m'importe que ce soit 'less', 'more', 'cat', 'dog', etc., du moment que les caractères sont imprimés. Je reconnais que c'est plus compliqué à cause du codage des caractères du fichier, donc si je dois le spécifier sur la ligne de commande, ça me va.

Voici ce que j'ai essayé jusqu'à présent :

  • cmd.exe
  • Windows PowerShell ; y compris la version multilingue.
  • Cygwin bash

Pas de chance. J'ai même essayé d'installer polices personnalisées pour cmd/PowerShell . PowerShell et cmd.exe semblent tenir compte de l'Unicode dans le sens où je peux copier/coller la boîte non imprimable qui en sort et la coller dans d'autres applications avec les caractères corrects. Cygwin ( ?) semble convertir le caractère ? et cela apparaît dans le copier/coller.

Des idées ?

40voto

McDowell Points 62645

Pour ce faire, il faut cmd.exe vous devrez utiliser la boîte de dialogue des propriétés de la console pour passer à une police TrueType Unicode.

Ensuite, utilisez ces commandes :

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

Commandes :

  • Passer la console en UTF-8 (65001)
  • Rediriger la sortie du DIR vers UTF8.TXT
  • Dump UTF-8 à la console

Les caractères devront toujours être pris en charge par la police pour s'afficher correctement sur la console.

I18N : Unicode à l'invite de commande de Windows (C++ ; .Net ; Java)

18voto

Don Jones Points 4788

C'était un problème majeur dans PowerShell v1. La v2 est livrée avec un "shell graphique" qui corrige le problème, qui est ultime non pas avec PowerShell mais avec l'hôte de la console Windows (que Cmd.exe utilise également). Vous pouvez obtenir le CTP actuel pour PowerShell v2, si vous le souhaitez.

...et j'interviens avec mes tout nouveaux pouvoirs d'édition.

En fait, Powershell v2.0 a été finalisé et livré avec la sortie de Windows 7 et 2008 R2 au début du mois d'août. En outre, les versions rétroportées (Vista/2008) ont atteint l'autre jour le stade de Release Candidate ; XP/2003 devrait suivre très prochainement. Linky linky .

6voto

kimsnarf Points 857

En réglant la page de code sur UTF-8 avec la commande "chcp 65001", vous devriez pouvoir imprimer correctement le contenu des fichiers au shell (en utilisant cmd.exe). Cela ne fonctionnera cependant pas pour les listes de répertoires (encodage UTF-16 dans les noms de fichiers NTFS).

5voto

iegik Points 388

Essayez ça :

powershell.exe -NoExit /c "chcp.com 65001"

Qui utilise msysgit :

powershell.exe -NoExit /c "chcp.com 65001; sh --login -i"

N'oubliez pas de changer la police de la fenêtre en police TrueType avec support UTF-8 ("Lucida Console").

2voto

crusherjoe Points 21

C'est ainsi que je peux obtenir une sortie en chinois dans cmd.exe fonctionnant sous Windows 7 Pro version anglaise. J'ai également essayé des noms de fichiers en japonais, en russe et en polonais et ils semblent tous s'afficher correctement. La saisie semble également fonctionner, du moins lorsque j'ai essayé de faire un dir xxx* contenant des caractères non ascii.

  1. Installer console2 qui est un frontal pour cmd.exe (et autres coquillages)

  2. Après l'installation, suivez ces instructions

    Supprimer la clé HKEY_CURRENT_USER\Console\Console2 command window dans le registre.

    Importez les données suivantes dans le registre de Windows :

    Windows Registry Editor Version 5.00
    [HKEY_CURRENT_USER\Console\Console2 command window] 
    "CodePage"=dword:000003a8 
    "FontSize"=dword:000a0000 
    "FontFamily"=dword:00000036 
    "FontWeight"=dword:00000190 
    "FaceName"="細明體" 
    "HistoryNoDup"=dword:00000000
  3. Il se peut que vous deviez ou non changer la police. Au départ, j'avais réglé la police sur @NimSum et les caractères chinois sont sortis avec une rotation de 90 degrés. Ensuite, je suis passé à NimSum (sans le @) et le résultat était correct. Puis, par curiosité, je suis passé à Consola et pourtant je peux toujours voir les caractères chinois. Je ne sais donc pas si vous devez réellement définir la police ou non.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X