Discussion:
Acentos en consola
(demasiado antiguo para responder)
Guevonaso
2006-09-14 11:21:15 UTC
Permalink
Tengo una duda que no encuentro la forma de arreglar.

He creado una pequeña clase que se ejecuta por linea de comando y me
debería de dar una salida tal que así:
[...] Los parámetros que admite son :
-add añade contenido [...] bla bla bla

el problema es que al ejecutarlo me provoca en la salida que los
acentos y caractéres latinos se convierten a simbolos .

He probado lo siguiente :

PrintStream ps = null;
try {
ps = new PrintStream(System.out, true, "ISO-8859-1");
// Tambie he probado con UTF-8 y alguno que otro más
} catch (UnsupportedEncodingException error) {
System.exit(-1);
}

ps.print ("Mensaje con á , ñ, é");

También hacer a esto:
mensajeDOS = new String(mensaje.getBytes("ISO-8859-1"), "ISO-8859-1");
System.out.print (mensajeDOS);

Pero no consigo que salga bien.

¿En que me equivoco?
emiedes
2006-09-14 11:33:08 UTC
Permalink
¿Consola en Windows o terminal Linux/UNIX?

Tal vez sea un problema de la consola. Por ejemplo, la fuente que está
usando podría no tener esos caracteres. O tal vez el encoding del
terminal no es el correcto.

Para descartarlo, envía la salida a un fichero y ábrelo con algún editor
multiformato, y a ver qué tal. Si el fichero está bien, debe ser cosa de
la consola (es decir, no es cosa del programa).
Post by Guevonaso
Tengo una duda que no encuentro la forma de arreglar.
He creado una pequeña clase que se ejecuta por linea de comando y me
-add añade contenido [...] bla bla bla
el problema es que al ejecutarlo me provoca en la salida que los
acentos y caractéres latinos se convierten a simbolos .
PrintStream ps = null;
try {
ps = new PrintStream(System.out, true, "ISO-8859-1");
// Tambie he probado con UTF-8 y alguno que otro más
} catch (UnsupportedEncodingException error) {
System.exit(-1);
}
ps.print ("Mensaje con á , ñ, é");
mensajeDOS = new String(mensaje.getBytes("ISO-8859-1"), "ISO-8859-1");
System.out.print (mensajeDOS);
Pero no consigo que salga bien.
¿En que me equivoco?
Guevonaso
2006-09-15 06:35:21 UTC
Permalink
Gracias emiedes.
Post by emiedes
¿Consola en Windows o terminal Linux/UNIX?
Tal vez sea un problema de la consola. Por ejemplo, la fuente que está
usando podría no tener esos caracteres. O tal vez el encoding del
terminal no es el correcto.
Para descartarlo, envía la salida a un fichero y ábrelo con algún editor
multiformato, y a ver qué tal. Si el fichero está bien, debe ser cosa de
la consola (es decir, no es cosa del programa).
Trabajo en Windows XP.
He hecho una redireccion a un fichero y se vé bien :

script.bat > salida.txt

Efectivamente, debe de ser cosa de la linea de comandos...

Ahora mi duda es como hacer para que se vea correctamente.
Yo en el terminal puedo escribir acentos con el teclado, pero en mi
salida por consola no se ve correctamente. ¿Alguna idea?


Y lo dicho, muchas gracias.
emiedes
2006-09-15 06:57:48 UTC
Permalink
Post by Guevonaso
Trabajo en Windows XP.
script.bat > salida.txt
Efectivamente, debe de ser cosa de la linea de comandos...
Ahora mi duda es como hacer para que se vea correctamente.
Yo en el terminal puedo escribir acentos con el teclado, pero en mi
salida por consola no se ve correctamente. ¿Alguna idea?
Ni idea. Yo lo hago todo en Linux. ¿Has buscado en Google?
Post by Guevonaso
Y lo dicho, muchas gracias.
Eduardo Yáñez Parareda
2006-09-15 09:08:49 UTC
Permalink
Post by Guevonaso
Ahora mi duda es como hacer para que se vea correctamente.
Yo en el terminal puedo escribir acentos con el teclado, pero en mi
salida por consola no se ve correctamente. ¿Alguna idea?
Quizás usando el mismo juego de caracteres que usa Windows... ¿no es el cp1252 o algo así?.
Oscar Garcia
2006-09-15 11:34:13 UTC
Permalink
Post by Guevonaso
Trabajo en Windows XP.
script.bat > salida.txt
Efectivamente, debe de ser cosa de la linea de comandos...
Si abres el archivo con un programa de windows lo abrirá usando un
juego de caracteres (iso-8859-1) completamente distinto al que usa el
terminal de msdos.

Si no, prueba a hacer esto:

echo "ÁéÍóÚñaÑe" > salida.txt

Y verás al abrirlo con el mismo programa de Windows que salen letras
extrañas. Exactamente saldrá "µ‚Ö¢é¤a¥e".

El problema es que el juego de caracteres de las aplicaciones windows
es distinto que el juego de caracteres de la consola de msdos.

En linux todo es más sencillo porque el juego de caracteres es usado
en todas partes por igual haciendo uso de la configuración de los
locales.
Post by Guevonaso
Ahora mi duda es como hacer para que se vea correctamente.
Yo en el terminal puedo escribir acentos con el teclado, pero en mi
salida por consola no se ve correctamente. ¿Alguna idea?
Prueba a usar algún conversor de cp1252 (o también llamado
windows-1252) a iso-8859-1 o incluso a utf-8 si tu lector de logs
soporta dicho formato (por defecto no, usarán la codificación de
windows).

Creo que bastará con cambiar iso-8859-1 por windows-1252 en tu
getBytes. Lo siento, yo también programo Java bajo Linux :) de modo
que no sé si funcionará.

Recuerda usar un editor de código Java que use la misma codificación
que el terminal donde vayan a mostrarse los resultados, de otro modo
el juego de caracteres con el que escribes el código no coincidirá con
lo que se mostrará por pantalla.
Post by Guevonaso
Y lo dicho, muchas gracias.
De nada.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/
Guevonaso
2006-09-19 07:30:17 UTC
Permalink
Hola, gracias a todos por la ayuda, no he sido capaz de hacer que me
salgan por la consola correctamente. No entiendo el porqué.

La única solución que medio he encontrado para la consola windows es:

1º - con el JSDK viene una aplicacion "native2ascii" que me da las
representaciones
de los caracteres con acento.
ó -> /u00a2

2º - Sustituyo todos mis acentos por esta representación (cambiando
la barra / por
la barra de escape \ ):

mensaje = "Aplicaci\u00a2n versi\u00a2m 1.1"; // Aplicación versión

Y funciona desde la linea de comandos de windows (lo probaré en casa
con linux) pero en la salida de consola de eclipse no... sale:
versi¢n 1.1

No se si echarme a llorar o simplemente patalear. Definitivamente esto
de los juegos de caractéres se me escapa de las manos.

Cualquier otra aportación es bienvenida.
Flint
2006-09-19 16:29:52 UTC
Permalink
Post by Guevonaso
Cualquier otra aportación es bienvenida.
Bien, los juegos de caracteres no salen correctamente por la consola
principalmente porque es una basura :-P Pero en fin, dejemos las
críticas furibundas y vayamos con algo constructivo.


El problema es que, ni el código de página, ni el juego de caracteres
permiten a la consola sacar acentos. La manera más sencilla (además de
la única) que he encontrado de que los saque es la siguiente:

Paso 1. Se cambia el font de la consola a Lucida Console. Botón
derecho->Propiedades.

Se ejecuta el comando chcp para que nos cambie el juego de caracteres. A
mí me funciona con "chcp 1252" que es el juego Windows Latin-1.

Se ejecuta el programa.

Se admiran los acentos y eñes.

Supongo que se podrá poner en utf-8 (o no, siendo windows quién sabe
:-P) pero ya habría que investigar los códigos de página, etc, además de
poder utilizar un font unicode que no sé si se puede, pero me da que no.
--
Un saludo, Flint
Gijon Fortuna (773926) www.fibha.com
Guevonaso
2006-09-20 06:38:42 UTC
Permalink
Post by Flint
El problema es que, ni el código de página, ni el juego de caracteres
permiten a la consola sacar acentos. La manera más sencilla (además de
Paso 1. Se cambia el font de la consola a Lucida Console. Botón
derecho->Propiedades.
Se ejecuta el comando chcp para que nos cambie el juego de caracteres. A
mí me funciona con "chcp 1252" que es el juego Windows Latin-1.
Se ejecuta el programa.
Se admiran los acentos y eñes.
Interesante, ahora vuelve a no salir los acentos :) (los que puse el
código
unicode \u00a1 ... etc )

Es decir, si la salida es un String = "áéí" haciendo eso que
comentas funciona. Pero entonces es cuando dejan de funcionar los
"\u00a1"
Además de que el haciendo el "chcp 1252" el teclado deja de introducir
acentos y ñ... bueno, no es que deje, es que no están en su sitio.

Como solución para salir del paso en un caso concreto, pues mira, pero
como solucion general, creo que no valdría.

Yo casi que lo he dejado por imposible.

Gracias y un saludo.
Fernando
Post by Flint
--
Un saludo, Flint
Gijon Fortuna (773926) www.fibha.com
Flint
2006-09-20 16:42:35 UTC
Permalink
Post by Guevonaso
Interesante, ahora vuelve a no salir los acentos :) (los que puse el
código
unicode \u00a1 ... etc )
Claro, porque 1512 no es unicode, es Windows Latin 1. Si le enchufas una
salida en unicode no se va a enterar.
Post by Guevonaso
Es decir, si la salida es un String = "áéí" haciendo eso que
comentas funciona. Pero entonces es cuando dejan de funcionar los
"\u00a1"
Para que eso funcione, habría que poner la consola en utf-8. Tendría que
mirar el código de página que no se cual es.
Post by Guevonaso
Además de que el haciendo el "chcp 1252" el teclado deja de introducir
acentos y ñ... bueno, no es que deje, es que no están en su sitio.
Como solución para salir del paso en un caso concreto, pues mira, pero
como solucion general, creo que no valdría.
Lo único que se me ocurre ahora mismo es que el juego de caracteres de
tu aplicación coincida con el código de página de la consola, que es el
850. Tendría que mirar también a qué juego de caracteres corresponde. En
realidad no avancé mucho más en el tema porque no tengo un ide a mano y
estaba probando con el notepad, lo que es un coñazo :-P
Post by Guevonaso
Yo casi que lo he dejado por imposible.
Gracias y un saludo.
Fernando
Post by Flint
--
Un saludo, Flint
Gijon Fortuna (773926) www.fibha.com
--
Un saludo, Flint
Gijon Fortuna (773926) www.fibha.com
Fren y yo
2006-09-15 17:01:27 UTC
Permalink
Post by emiedes
¿Consola en Windows o terminal Linux/UNIX?
Tal vez sea un problema de la consola. Por ejemplo, la fuente que está
usando podría no tener esos caracteres. O tal vez el encoding del
terminal no es el correcto.
Para descartarlo, envía la salida a un fichero y ábrelo con algún editor
multiformato, y a ver qué tal. Si el fichero está bien, debe ser cosa de
la consola (es decir, no es cosa del programa).
Hola, yo tambien estoy dando mis primeros pasos...
A mí tampoco me salen los acentos por consola:
Si por ejemplo hago:"System.out.println("Configuración")" en la
consola me sale la "ó" acentuada como el signo del tres cuartos (¾)
¿me podeis ayudar?
Trabajo con Windows.
Gracias y saludos
Continúe leyendo en narkive:
Loading...