2009-06-23 31 views
13

Escribí una pequeña aplicación Java cuyo resultado incluye caracteres Unicode. Cuando uso Eclipse para ejecutarlo — veo toda la salida como se esperaba.Salida Unicode en la línea de comandos de Windows?

Las personas que se supone que usan la aplicación la ejecutarán como un archivo jar. Pensé que podrían usar la ventana estándar de cmd, pero en esta ventana el Unicode aparece como Gibberish.

¿Hay alguna manera de hacer que "cmd window" reconozca los caracteres Unicode y los muestre correctamente? O, ¿hay alguna herramienta para ejecutar fácilmente el archivo jar y obtener la salida correcta?

BTW - redirigir la salida a un archivo funciona bien, pero el programa es interactivo, por lo que esta no será una buena solución.

Edit: Gracias a todos por las sugerencias. Parece que las fuentes cmd no tienen los caracteres específicos que necesito, y es por eso que cambiar la página de códigos no resolvió mi problema.

Encontré un way para agregar más fuentes monoespaciadas a la consola, pero después de agregarlas, cualquier cambio que quiera hacer con respecto a las fuentes (incluso eligiendo una de las fuentes originales en un tamaño diferente) se ignora.

Creo que simplemente intentaré con otra herramienta, que permite elegir una fuente diferente más fácilmente.

+0

Supongo que tendrás que escribir una "consola" para tu aplicación después de todo ... – maxwellb

+0

"forma de agregar más fuentes monoespaciadas a la consola" - el enlace está muerto – mbomb007

+0

[Aquí] (https: //www.techrepublic. com/blog/windows-and-office/quick-tip-add-fonts-to-the-command-prompt /) es una forma de agregar más fuentes. Sin embargo, no estoy seguro de si ya tiene el problema mencionado por el OP. – mbomb007

Respuesta

0

intento CMD/C/U java your.jar

+0

Ya dijo que la redirección no es el problema. – Joey

+0

Esto no resolvió el problema ... Hasta donde yo entiendo,/U solo influye en la salida de comandos internos. – Dikla

+2

Además, sería cmd/U/c, de lo contrario "/ U no se reconoce como un comando interno o externo". – maxwellb

1

El problema es la fuente con la que la consola está mostrando ventanas de salida. Desafortunadamente para ti, esta es una configuración de usuario.

Le recomiendo que sugiera que los usuarios configuren la fuente de la consola de Windows en la Consola Lucida. Esa fuente debe poder manejar caracteres anchos/unicode.

+3

Incluso en Windows 7 las ventanas de la consola son por defecto fuentes ráster :-(. Muy desafortunado. – Joey

+4

Cambié la fuente a Lucida. Esto no solucionó el problema :( – Dikla

+0

Gracias por los comentarios Dikla. Hice clic -1 ya que de hecho , no ayuda. – maxwellb

0

Para cualquier respuesta, revíselo primero. Este es un programa de consola simple, que verifica que cambiar la fuente en realidad no funciona.

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

Comprobaré si la respuesta es concretamente "No se puede hacer". Otras avenidas para verificar: use un caparazón diferente. es decir, Powershell? Veré si eso funciona.

Sin embargo, usted podría hacer:

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

Negación: Mi ejemplo es C#, pero la aplicación de consola debería funcionar como tal.

Y vea los resultados así, mientras tanto.

+0

Derecha, noté la redirección. Interactividad. 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 

También desde Is there a Windows command shell that will display Unicode characters?

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

¿La "Consola Lucida" admite caracteres especiales? Intenté varios caracteres y se mostraron como un cuadrado en la ventana del cmd. – Dikla

0

En C++/C sólo tiene que utilizar esto: system("chcp 65001");

No se olvide de cambiar la fuente de la consola para Lucida Console

Cuestiones relacionadas