2009-06-23 17 views
13

Ho scritto una piccola applicazione Java che include caratteri Unicode. Quando utilizzo Eclipse per eseguirlo — vedo tutto l'output come previsto.Uscita Unicode sulla riga di comando di Windows?

Le persone che dovrebbero utilizzare l'applicazione lo eseguiranno come file jar. Pensavo che potessero usare la finestra standard di cmd, ma in questa finestra l'Unicode appare come Gibberish.

C'è un modo per rendere "finestra cmd" riconoscere i caratteri Unicode e visualizzarli correttamente? Oppure, esiste uno strumento per eseguire facilmente il file jar e ottenere l'output corretto?

BTW: il reindirizzamento dell'output a un file funziona correttamente, ma il programma è interattivo, quindi questa non sarà una buona soluzione.

Modifica: Grazie a tutti per i suggerimenti. Sembra che i caratteri cmd non abbiano i caratteri specifici di cui ho bisogno, ed è per questo che la modifica della code page non ha risolto il mio problema.

Ho trovato un way per aggiungere altri font monospaced alla console, ma dopo averli aggiunti qualsiasi modifica che voglio fare riguardo i font (anche scegliendo uno dei font originali in una dimensione diversa) - viene ignorata.

Penso che proverò semplicemente con un altro strumento, che supporta il chhosing di un font diverso più facilmente.

+0

Suppongo che dovrai scrivere una "console" per l'applicazione dopotutto ... – maxwellb

+0

"modo per aggiungere più font monospaziali alla console" - il collegamento è morto – mbomb007

+0

[qui] (https: //www.techrepublic. com/blog/windows-and-office/quick-tip-add-fonts-to-the-command-prompt /) è un modo per aggiungere altri caratteri. Non sono sicuro se abbia il problema che l'OP ha menzionato più, però. – mbomb007

risposta

0

try CMD/c/U java your.jar

+0

Ha già detto che il reindirizzamento non è il problema. – Joey

+0

Questo non ha risolto il problema ... Per quanto ho capito,/U influenza solo l'output di comandi interni. – Dikla

+2

Inoltre, sarebbe cmd/U/c, altrimenti "/ U non viene riconosciuto come comando interno o esterno". – maxwellb

1

Il problema è il tipo di carattere con cui la console di Windows è la visualizzazione di output. Sfortunatamente per te, questa è un'impostazione utente.

Si consiglia di suggerire agli utenti di impostare il font della propria console Windows su Lucida Console. Quel font dovrebbe essere in grado di gestire caratteri wide/unicode.

+3

Anche in Windows 7 le finestre della console sono predefinite per i caratteri raster :-(Molto spiacevole – Joey

+4

Ho cambiato il font in Lucida.Questo non ha risolto il problema :( – Dikla

+0

Grazie per il feedback Dikla. Ho cliccato su -1 poiché questo in effetti – maxwellb

0

Per qualsiasi risposta, controllare prima. Questo è un semplice programma di console, che verifica che la modifica del font in realtà non funzioni.

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; 
     } 
    } 
} 

Verificherò se la risposta è concreta "Non si può fare". Altre strade da controllare: usa un guscio diverso. vale a dire PowerShell? Vedrò se funziona.

Tuttavia, si potrebbe fare:

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

responsabilità: Il mio esempio è C#, ma l'applicazione di console dovrebbe funzionare come tale.

E vedere i risultati così, nel frattempo.

+0

Giusto, ho notato il reindirizzamento Interattività 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 

anche da Is there a Windows command shell that will display Unicode characters?

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

Fa "Console di Lucida" supporta caratteri speciali? Ho provato diversi caratteri e sono stati visualizzati come un quadrato sulla finestra di cmd. – Dikla

0

In C++/C basta usare questo: system("chcp 65001");

Non dimenticare di cambiare il font della console per Lucida Console

Problemi correlati