web-dev-qa-db-fra.com

Existe-t-il une commande Windows Shell qui affichera des caractères Unicode?

En supposant que j'ai installé des polices contenant les glyphes appropriés, existe-t-il une commande Shell pour Windows XP permettant d'afficher les caractères Unicode? Au minimum, deux éléments doivent afficher correctement Unicode:

  • Répertoires de répertoire. Peu m'importe ce que je dois taper (dir, ls, get-childitem, etc.), tant que les fichiers avec des caractères Unicode dans leurs noms apparaissent avec les bons glyphes, pas la zone de caractère non imprimable.
  • Listes de contenu du fichier texte. Encore une fois, peu m'importe si c'est «moins», «plus», «chat», «chien», etc., tant 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 convient.

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 des polices personnalisées pour cmd/PowerShell . PowerShell et cmd.exe semblent être compatibles avec Unicode en ce sens que je peux copier/coller la zone non imprimable à partir de là et qu'elle sera collée dans d'autres applications avec les caractères corrects. Cygwin (?) Semble se convertir au? caractère et qui passe dans le copier/coller.

Des idées?

49
Brandon DuRette

Il s'agissait d'un problème majeur dans PowerShell v1. La version 2 est livrée avec un "shell graphique" qui corrige le problème, ce qui n’est finalement pas avec PowerShell, mais avec la console Windows hôte (que Cmd.exe utilise également). Vous pouvez obtenir le CTP actuel pour PowerShell v2, si vous le souhaitez.

En fait, PowerShell v2.0 a été finalisé et livré avec la publication de Windows 7 et de Windows Server 2008 R2 début août. De plus, les versions de backport (Windows Vista/2008) ont atteint leur jalon Release Candidate l’autre jour; Windows XP/Windows Server 2003 devrait suivre très prochainement. Linky linky .

18
Don Jones

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

Ensuite, utilisez ces commandes:

 CHCP 65001
 DIR > UTF8.TXT
 TYPE UTF8.TXT

Commandes:

  • Basculer la console sur UTF-8 (65001)
  • Rediriger la sortie de DIR vers UTF8.TXT
  • Décharger UTF-8 sur 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 Windows (C++; .Net; Java)

40
McDowell

La définition de la page de code sur UTF-8 à l’aide de la commande "chcp 65001" devrait vous aider à imprimer le contenu du fichier correctement sur le shell (à l’aide de cmd.exe). Cela ne fonctionnera pas pour les listes de répertoires (encodage UTF-16 dans les noms de fichiers NTFS).

6
Kim André Sand

Essaye ç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 le support UTF-8 ("Lucida Console")

5
iegik

Pour un vrai Shell, essayez PowerShell Plus. Vous pouvez sélectionner des polices Unicode et travailler avec d'autres langues, non seulement dans l'éditeur, mais également dans la console True.

2
karl prosser

C’est ainsi que je peux obtenir la sortie chinoise en cmd.exe sous Windows 7 Pro Version anglaise. J'ai aussi essayé les noms de fichiers en japonais, russe et 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. Installez console2 , qui est un frontal pour cmd.exe (et autres shells)

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

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

    Importez les données suivantes dans le registre 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. Vous pouvez ou non avoir à changer la police. Au départ, la police avait la valeur @NimSum et les caractères chinois sont sortis avec une rotation de 90 degrés. Puis je suis passé à NimSum (sans le @) et le résultat est correct. Puis, par curiosité, je suis passé à Consola et pourtant je peux toujours voir les caractères chinois. Donc, je ne suis pas sûr si vous devez réellement définir la police ou non.

2
crusherjoe

Essayez Console 2 . Soyez prudent avec les configurations de couleurs/palette cependant. Ce sont un peu buggy. Je leur ai confirmé de ne pas travailler; ils se comportent comme cmd.exe.

1
Kim André Sand

PowerShell V2 CTP3 inside Console2 semble le faire. Le seul inconvénient est que le codage par défaut de la console est UCS-2 LE au lieu de UTF-8.

0
Robin Smidsrød

À compter du novembre 2011 , MinTTY est désormais l'émulateur de terminal par défaut de Cygwin (installé par setup.exe). MinTTY est un fork de l'émulateur de terminal de PuTTY et, à ce titre, offre un support Unicode approprié et une compatibilité bien améliorée avec les autres émulateurs de terminal.

0
nneonneo

Ouvrez une invite de commande avec privilèges (exécutez cmd en tant qu'administrateur). Interrogez votre registre pour connaître les polices TrueType disponibles sur la console en procédant comme suit:

REG query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont"

Vous verrez une sortie comme:

0    REG_SZ    Lucida Console
00    REG_SZ    Consolas
936    REG_SZ    *新宋体
932    REG_SZ    *MS ゴシック

Nous devons maintenant ajouter une police TrueType prenant en charge les caractères dont vous avez besoin, comme Courier New. Pour ce faire, ajoutez des zéros au nom de la chaîne. Dans ce cas, la suivante serait "000":

REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont" /v 000 /t REG_SZ /d "Courier New"

Maintenant, nous implémentons le support UTF-8:

REG ADD HKCU\Console /v CodePage /t REG_DWORD /d 65001 /f

Définissez la police par défaut sur "Courier New":

REG ADD HKCU\Console /v FaceName /t REG_SZ /d "Courier New" /f

Définissez la taille de la police sur 20:

REG ADD HKCU\Console /v FontSize /t REG_DWORD /d 20 /f

Activez l'édition rapide si vous aimez:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f
0
Alon Or