2008-12-18 8 views
48

En supposant que j'ai des polices installées avec les glyphes appropriés, existe-t-il un shell de commande pour Windows XP qui affichera les caractères Unicode? Au minimum, deux éléments doivent afficher Unicode correctement:Existe-t-il un shell de commande Windows qui affichera les caractères Unicode?

  • Liste des répertoires. Je ne me soucie pas de 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 boîte de caractère non imprimable.
  • Listes de contenu de fichier texte. Encore une fois, cela ne me dérange pas 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 de 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 custom fonts for cmd/PowerShell. PowerShell et cmd.exe semblent être Unicode-conscient dans le sens où je peux copier/coller la boîte non-imprimable hors de là et il va coller dans d'autres applications avec les caractères corrects. Cygwin (?) Semble se convertir à la? caractère et qui vient à travers dans le copier/coller.

Des idées?

Répondre

18

Cela a été un problème majeur dans PowerShell v1. La version 2 est livrée avec un "shell graphique" qui corrige le problème, qui n'est finalement 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.

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

+1

Renvoyé pour suggérer une solution de travail au problème. Je l'accepterais, sauf que je laisse espérer quelque chose de mieux. Comme "alpha précoce", il a un long chemin à parcourir pour être un shell vraiment utilisable. –

+1

Le CTP3 actuel est incroyablement stable et, malheureusement, il s'agit de la seule solution disponible ces jours-ci qui n'implique pas de payer de l'argent. –

+0

Depuis que ce vieux sujet a été récemment passé en tête de liste, j'ai édité la réponse primaire avec un lien vers les derniers bits de Powershell. –

2

Pour un véritable shell, essayez PowerShell Plus. Vous pouvez sélectionner des polices Unicode et travailler avec d'autres langues, non seulement dans l'éditeur, mais dans la vraie console.

0

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

+1

Sur votre suggestion, j'ai essayé et cela ne semble pas résoudre mon problème. L'exécution de 'dir' dans un répertoire avec des fichiers dont le nom contient des caractères coréens entraîne des?. Ce comportement est le même que cmd.exe. –

+0

Ok. La console2 utilise probablement aussi l'hôte de la console Windows, juste avec un frontal plus agréable. –

6

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

+0

Bonne réponse. Cela fonctionne aussi à Powershell. –

39

Pour cela avec cmd.exe, vous devrez utiliser la boîte de dialogue des propriétés de la console pour basculer vers une police Unicode TrueType.

ensuite utiliser ces commandes:

CHCP 65001 
DIR > UTF8.TXT 
TYPE UTF8.TXT 

Commandes:

  • commutateur de console de UTF-8 (65001)
  • de redirection de sortie DIR pour 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 at the Windows command prompt (C++; .Net; Java)

+0

C'est la bonne façon de le faire! Thx McDowell! –

+0

Selon https://stackoverflow.com/questions/14109024/how-to-make-unicode-charset-in-cmd-exe-by-default, CP 65001 ne résout pas tous les problèmes avec le support Unicode, donc c'est un solution imparfaite. –

0

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

2

Voici comment je peux obtenir une sortie en chinois sous cmd.exe sous Windows 7 Pro English Version. J'ai également essayé les noms de fichiers avec le japonais, le russe et le polonais et ils semblent tous s'afficher correctement. L'entrée semble également fonctionner, au moins quand j'ai essayé de faire un dir xxx* contenant des caractères non-ASCII.

  1. console2 Installer, qui est un front-end à cmd.exe (et d'autres coquilles)

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

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

    Importer les données suivantes dans 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 ne pas avoir à changer la police. Initialement j'avais la police définie à @NimSum, et les caractères chinois sont sortis à 90 degrés. Ensuite, je suis passé à NimSum (sans le @) et il est sorti correctement. Puis, juste par curiosité, je suis passé à Consola et pourtant je peux encore voir les caractères chinois. Donc, je ne suis pas sûr si vous devez réellement définir la police ou non.

0

Au November 2011, MinTTY est maintenant l'émulateur de terminal par défaut de Cygwin (installé par setup.exe). MinTTY est une fourchette de l'émulateur de terminal de PuTTY, et en tant que tel supporte le support Unicode et une compatibilité améliorée avec d'autres émulateurs de terminaux.

5

Essayez ceci:

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

Qui utilise msysgit:

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

Ne pas oublier de changer la police de la fenêtre de police TrueType avec prise en charge UTF-8 ("Lucida Console")

+0

Cela fonctionne bien pour que mes caractères utf8 s'affichent correctement. Y a-t-il un moyen de rendre la PowerShell?Exe configuration persistante (chcp.com 65001) afin qu'il soit sélectionné par défaut? – chmike

+0

cmd avec le même que vous configurez, est également travail utiliser chcp 65001, puis choisissez la police Lucida console – alljoyland

+0

J'utilise msysgit dans PowerShell avec la configuration suivante: https://gist.github.com/iegik/7485025 – iegik

-1

Egalement de UTF-16 on cmd.exe

Open/run cmd.exe 
    Click on the icon at the top-left corner 
    Select properties 
    Then "Font" bar 
    Select "Lucida Console" and OK. 
    Write Chcp 10000 at the prompt 
    Finally dir /b 
+3

10000 n'est pas une page de codes Unicode et elle ne peut pas afficher les caractères en dehors du jeu de caractères Mac Roman –

0

Ouvrez une invite de commande élevée (exécutez cmd en tant qu'administrateur). Interroger votre registre pour les polices TrueType disponibles à la console par:

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 ゴシック 

Maintenant, nous devons ajouter une police TrueType qui prend en charge les caractères dont vous avez besoin comme Courier nouveau, nous faisons cela en ajoutant des zéros au nom de la chaîne, dans ce cas le prochain serait « 000 »:

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

maintenant, nous implémentent le support UTF-8:

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

Définir la police par défaut "Courier New":

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

Définir la taille de la police à 20:

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

Activer édition rapide si vous aimez:

REG ADD HKCU\Console /v QuickEdit /t REG_DWORD /d 1 /f 
-2

A moyen rapide et pratique de le faire est sur l'explorateur.

 
    1. Open the Explorer window. 
    2. Traverse to the top level of directory where you want to find. 
    3. On the upper right corner, there is a find field. 
Questions connexes