Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Problema encoding caracteres latinos

Estas en el tema de Problema encoding caracteres latinos en el foro de Java en Foros del Web. Buenas días, tengo un problemilla con un programa en Java que estoy intentando terminar. He hecho un chat, con servidor y cliente, usando el ServerSocket ...
  #1 (permalink)  
Antiguo 23/10/2015, 05:05
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Exclamación Problema encoding caracteres latinos

Buenas días, tengo un problemilla con un programa en Java que estoy intentando terminar. He hecho un chat, con servidor y cliente, usando el ServerSocket y Socket de Java. Tengo el cliente hecho en JavaFX.

Todo ha ido bastante hasta ahora, excepto cuando me he dado cuenta de que al subir el servidor a un VPS que tengo contratado, cuando se envian caracteres tales como la 'ñ' o '€' o tildes, sale una '?' en el ListView (que es lo que uso para mostrar el chat en el cliente hecho en JavaFX).

Mirando en google descubrí que en Eclipse (que es donde lo desarrollo), debía cambiar el Encoding a 'UTF-8'.Resulta que después de hacer eso, localmente funcionaba bien, excepto que me salió otro error que preguntaré más adelante. Pero al subirlo de nuevo al servidor, el problema persistia, por lo que al principio deduje que tenía que ser el VPS, quizás por el idioma del SO, pero luego me acorde y verifiqué que aunque estuvera en en_US seguía siendo UTF-8.

También he probado poniendo tanto en el cliente como en el servidor: InputStreamReader(clientSocket.getInputStream(), "UTF-8"); Pero sigue sin funcionar

El otro problema que mencionaba es que, para mostrar alertas cuando ocurren excepciones uso Alert de JavaFX, y salían bien los acentos en estos hasta que cambié el encoding en Eclipse de 'Cp1252' a 'UTF-8'.

Total, que no se como solucionar ni lo uno ni lo otro y en google no he encontrado nada. Espero que alguna alma caritativa que sepa del tema me pueda ayudar o decirme si sabe de algún sitio que lo expliquen.

¡Muchísimas gracias de antemano y saludos!
  #2 (permalink)  
Antiguo 23/10/2015, 05:23
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problema encoding caracteres latinos

Buenas,

Y la JVM instalada en tu servidor VPS? que encoding usa?
Comprueba el valor de la propiedad file.encoding:
System.getProperty("file.encoding");

Si no es correcto, puedes establecerlo en el arranque con el parametro:
-Dfile.encodig=UTF8

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 23/10/2015, 07:24
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema encoding caracteres latinos

Muchísimas gracias por tan rápida respuesta.

Sigo igual, no se que narices estoy haciendo mal.

He probado: 'java -jar -Dfile.encodig=UTF8 ./chatserver.jar' y se inicializa bien pero siguen saliendo los interrogantes...

Lo he probado dejando el encoding en Eclipse en Cp1252 y con UTF-8 y nada...
En local funciona solo con cambiar el encoding en Eclipse a UTF-8, aunque me sale el otro error comentado...

No se cual puede ser el error. Muchas gracias de nuevo

Saludos
  #4 (permalink)  
Antiguo 23/10/2015, 07:59
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problema encoding caracteres latinos

Ummm yo acabo de hacer una prueba tonta en un CentOS remoto y no tengo problemas con el encoding.

Desde luego en Eclipse deberias trabajar siempre con UTF-8 y resolver pequenos errores si estos se producen. Recuerda que tienes que acceder a los parametros de eclipse y en la seccione de 'editores' cambiar el encoding para todos los tipos de archivos (seguramente por eso te esta dando esos erroreS.)

En el VPS, como accedes a la aplicacion? Mediante una interfaz remota tipo VNC?

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #5 (permalink)  
Antiguo 23/10/2015, 09:16
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema encoding caracteres latinos

He subido unas capturas a imageshack ya que una imagen vale más que mil palabras jeje.

EDITO: Me acabo de dar cuenta de como solucionar el problema de la alerta (lo otro sigo sin dar con ello). Tengo que volver a escribir todas las tildes de los Strings que lo lleven en todos los proyectos.



Configuración de Eclipse en el momento de las pruebas:





Prueba en local

Conectando:



Haciendo pruebas con caracteres latinos (todo correcto menos la ventana de aviso):




Prueba en VPS

Login al servidor por ssh con Putty. Ejecución del servidor chat:



Prueba de los errores (se supone que en las dos primeras interrogantes debería haber dos 'ñ's y en la segunda una tilde):





Y ese es el tema. Siento dar el coñazo con esto y muchísimas gracias por todo. La verdad es que no tengo ni idea de cual es el problema.

Saludos

Última edición por BeWater; 23/10/2015 a las 09:56
  #6 (permalink)  
Antiguo 23/10/2015, 14:08
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: Problema encoding caracteres latinos

Buenas,

Yo creo que la clave esta en el tratamiento del encoding hecho por los sockets. Ya se que has hecho algo, pero tienes que revisar mejor ese tema:
https://www.google.com/search?q=java...%20utf-8&rct=j

Por otro lado en la captura pones -Dfile.encodig sin la n, aunque supongo que eso sera un error puntual.

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #7 (permalink)  
Antiguo 24/10/2015, 06:54
 
Fecha de Ingreso: abril-2015
Mensajes: 6
Antigüedad: 9 años
Puntos: 0
Respuesta: Problema encoding caracteres latinos

Ya solucioné el tema, muchísimas gracias por todo Profesor_Falken, de verdad.

Lo de '-Dfile.encodig' sin la 'n' fue porque hice copy & paste de lo que escribiste tu jeje. Aunque lo probe con la 'n' y seguía exactamente igual.

Al final lo solucioné como me dijiste tu, mirando bien por google con 'java socket utf8' y al final en una de estas probé haciendo un pequeño cambio en el código y ya funcionó sin necesidad de escribir al ejecutar '-Dfile.encoding=UTF8' .

Dejo la solución por si hay alguien más a quien le haya pasado.

out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8")), true);

in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(), "UTF-8"));

Hay que escribir eso tanto en el cliente como en el servidor.

¡Gracias de nuevo Profesor_Falken!

Etiquetas: caracteres, encoding, latinos, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:49.