2010-09-23 6 views
15

J'ai un serveur anglais Windows 2003 avec le support de langue asiatique activé. Les deux seules polices disponibles pour la fenêtre de commande (paramètres cmd) sont la console raster et lucida. Ni l'un ni l'autre n'affiche le Kanji correctement (affiché comme point d'interrogation).Comment afficher le kanji japonais dans une fenêtre cmd sous windows?

Existe-t-il une solution pour les afficher? Y at-il une transformation que je dois faire dans mon application avant d'écrire sur la console?

Je suis en train d'écrire UTF8 en ce moment, ce qui fonctionne bien aussi pour certains caractères non ASCII (comme öäüß). Le code source écrit sur la console a les données correctes (le Kanji peut être vu correctement dans le débogueur). Si c'est important, j'écris l'application en C#.

EDIT: J'ai trouvé ce link qui explique les problèmes à l'origine du problème et présente une solution (impliquant des appels natifs) pour C#. Cela doit fonctionner correctement avec 4,5 .NET (non testé par moi)

+3

コ ン ト ロ ー ル パ ネ ル で, ロ ー カ ル の 所 で 日本語 を 選 ん で –

+1

Traduction: "Sélectionnez japonais dans le panneau de contrôle au lieu d'une autre page de code" (je suppose qu'il est dans la langue par défaut pour l'onglet non programmes unicode). – jdehaan

+1

@ ring0, Cela fonctionne en effet! J'ai un symbole yen au lieu de barres obliques inverses, comme sur les systèmes japonais sur lesquels je travaille. Les Kanjis sont affichés maintenant. Seul point négatif les polices fixes sont assez moche pour l'anglais, mais bon, ça marche. Démarrer -> Panneau de configuration -> Options régionales et linguistiques -> Avancé -> Langue pour les programmes non-Unicode -> Japonais ... – jdehaan

Répondre

6

Si vous trouvez une police qui affiche le jeu de caractères kanji, vous pouvez ajouter cette police aux paramètres cmd en ajoutant des valeurs sous cette clé de Registre:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont\ 

valeurs:

Name: 00 
Data: Consolas 

Je l'ai fait avant, mais cette référence trouvé SuperUser: https://superuser.com/q/55318

Hope this helps

+0

Bon conseil. Malheureusement, cela n'a pas fonctionné pour moi et les Kanjis. Notez que seules les polices fixes telles que "Courier New" apparaissent dans la sélection de la console. La définition de polices non fixes dans le registre n'a aucun effet. Je pense que c'est peut-être dû à certains liens dans les polices. Dans le cas de "Arial Unicode MS" il est passé à "Mincho" dans la carte des caractères quand je sélectionne la gamme Kanji ... Bizarre truc :-) – jdehaan

+0

Sur la machine une Consolas n'était pas disponible. J'ai testé sur un autre et cette police semble vraiment bien fonctionner. Seul l'impact légal sur l'utilisation de la police (réservé aux licenciés VS Studio) est un peu problématique ... Au moins sur la machine de développement Cela fonctionne. Je dois juste trouver une police gratuite qui fait la même chose. – jdehaan

+0

'HKEY_CURRENT_USER \ Console' fournit également des possibilités de réglage intéressantes – jdehaan

3

Comment votre application écrit-elle en sortie? Les appels stdio basés sur C octets comme printf ne prendront pas en charge UTF-8 sur Windows, sauf si vous avez spécifiquement défini la console pour utiliser l'encodage UTF-8 en disant chcp 65001 && somecommand (et même alors il y a des problèmes).

Sans la console chcp, la console utilisera la page de code par défaut de l'installation de Windows, en l'occurrence cp1252, et l'écriture en kanji sera impossible même si la police de la console que vous utilisez a des glyphes.

Si vous souhaitez écrire Unicode sur la console de façon fiable, vous devrez utiliser des interfaces basées sur les caractères comme wprintf.

+0

+1, merci pour cette indication aussi, il semble en effet être un problème de codepage à la fin. Je pensais que cmd.exe était un programme Unicode, mais en fait, il semble ne pas l'être. Les choses qui peuvent être réglées dans le registre (voir la réponse de paludarium) montrent comment lier la page de codes à la police utilisée ... Je commence à voir la lumière au bout du tunnel! – jdehaan

+3

'cmd.exe' * peut * afficher les caractères Unicode, mais seulement si le processus qu'il exécute le passe Unicode, via' wprintf' ou Win32 'WriteConsoleW'. Cependant, la plupart des logiciels de ligne de commande utilisent les fonctions de sortie basées sur les octets C stdio comme 'printf', vous serez donc limité par la page de codes. Il est très regrettable que sur Windows, la page de code par défaut du système ne puisse jamais être 65001 (UTF-8), et qu'il y ait quelques bogues sérieux avec le réglage 'chcp 65001' du tout. Tous les autres systèmes d'exploitation ont été standardisés sur UTF-8, ce qui permet à n'importe quelle ancienne application de console basée octet de faire quelque chose de sensé avec Unicode. – bobince

+0

'Console.OutputEncoding = Encodage.UTF8; 'ET la définition de la police à" Consolas "fonctionne. Cependant, je reçois des erreurs bizarres sur la taille de la police quand je vais à nouveau à la configuration de la police de la console ... – jdehaan

3

Voici comment je peux obtenir des entrées/sorties chinoises dans cmd.exe fonctionnant sous Windows 7 Pro English Version.

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

  2. Après l'installation, suivez les instructions here

    • touche Supprimer "fenêtre de commande Console2" dans le registre
    • Importer les données suivantes dans Registre Windows:

    • Pour les Chinois (中文) de Windows XP & Vista:

      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 
      
    • Pour le japonais (日本語) Windows XP & Vista:

      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"="MS 明朝" 
      "HistoryNoDup"=dword:00000000 
      
  3. Vous pouvez ou ne pas avoir à changer la police. Initialement j'avais la police définie sur @NimSum, et les caractères chinois sont sortis tournent à 90 degrés. Puis 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 sais pas si vous devez définir la police ou non.

Questions connexes