2009-06-23 8 views
13

J'ai écrit une petite application Java dont la sortie inclut des caractères Unicode. Lorsque j'utilise Eclipse pour l'exécuter —, je vois toutes les sorties comme prévu.Sortie Unicode sur la ligne de commande Windows?

Les personnes censées utiliser l'application l'exécuteront en tant que fichier jar. Je pensais qu'ils pourraient utiliser la fenêtre standard cmd, mais dans cette fenêtre, l'Unicode apparaît comme Gibberish.

Existe-t-il un moyen de faire en sorte que "cmd window" reconnaisse les caractères Unicode et les affiche correctement? Ou, existe-t-il un outil pour exécuter facilement le fichier JAR et obtenir la bonne sortie? BTW - rediriger la sortie vers un fichier fonctionne bien, mais le programme est interactif, donc ce ne sera pas une bonne solution.

Éditer: Merci à tous pour vos suggestions. Il semble que les polices cmd n'ont pas les caractères spécifiques dont j'ai besoin, et c'est pourquoi la modification de la page de codes n'a pas résolu mon problème.

J'ai trouvé un way pour ajouter plus de polices à espacement fixe à la console, mais après les avoir ajoutées, toute modification que je souhaite apporter aux polices (même en choisissant une des polices d'origine dans une taille différente) est ignorée.

Je pense que j'essaierai simplement avec un autre outil, qui supporte le chhosing une police differnt plus facilement.

+0

la police de la console Je suppose que vous devrez écrire une "console" pour votre application après tout ... – maxwellb

+0

"façon d'ajouter plus de polices à espacement fixe à la console" - le lien est mort – mbomb007

+0

[ici] (https: //www.techrepublic. com/blog/windows-et-office/quick-tip-ajouter-fonts-to-the-command-invite /) est un moyen d'ajouter plus de polices. Je ne sais pas si elle a le problème mentionné par l'OP, cependant. – mbomb007

Répondre

0

essayer CMD/c/U java your.jar

+0

Il a déjà dit que la redirection n'est pas le problème. – Joey

+0

Cela n'a pas résolu le problème ... Pour autant que je comprends,/U influence seulement la sortie des commandes internes. – Dikla

+2

Aussi, serait cmd/U/c, sinon "/ U n'est pas reconnu comme une commande interne ou externe". – maxwellb

1

Le problème est la police avec laquelle la console Windows affiche la sortie. Malheureusement pour vous, il s'agit d'un paramètre utilisateur.

Je vous recommande de suggérer à vos utilisateurs de définir leur police de console Windows sur Lucida Console. Cette police devrait être capable de gérer les caractères larges/unicodes.

+3

Même dans Windows 7 les fenêtres de la console par défaut pour les polices raster :-(Très malheureux – Joey

+4

J'ai changé la police à Lucida Cela n'a pas résolu le problème :( – Dikla

+0

Merci pour les commentaires Dikla.J'ai cliqué -1 puisque cela en fait , n'aide pas – maxwellb

0

Pour toute réponse, vérifiez-la d'abord. Ceci est un programme de console simple, qui vérifie que la modification de la police ne fonctionne pas réellement.

using System; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Console.OutputEncoding = System.Text.Encoding.UTF8; 
      Console.WriteLine("日本語です"); 
      Console.Write("Finished. Press a key. "); 
      Console.ReadLine(); 
      return; 
     } 
    } 
} 

Je vais vérifier si la réponse est concrètement "Impossible à faire". Autres avenues à vérifier: utilisez une coque différente. c'est-à-dire Powershell? Je verrai si cela fonctionne.

Cependant, vous pouvez faire:

ConsoleApplication1.exe > output.txt 
notepad.exe output.txt 

Avertissement: Mon exemple est C#, mais l'application de la console devrait toujours fonctionner en tant que tel.

Et voir les résultats comme ça, en attendant.

+0

Droit, remarqué la redirection .. Interactivité Hmm .. – maxwellb

0

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 

également de Is there a Windows command shell that will display Unicode characters?

CHCP 65001 
DIR > UTF8.TXT 
TYPE UTF8.TXT 
+2

Est-ce que "Lucida Console" prend en charge des caractères spéciaux? J'ai essayé plusieurs caractères et ils ont été affichés comme un carré sur la fenêtre cmd. – Dikla

0

En C++/C il suffit d'utiliser ceci: system("chcp 65001");

Ne pas oublier de changer pour Lucida Console

Questions connexes