Java y codificacion de Linux
Publicado por Luigikhan (3 intervenciones) el 16/06/2009 05:44:51
Buen día mi problema es el siguiente:
Tengo una aplicación java J2SE que envia un String mediante un socket, dicho string contiene caracteres en ascii del 0 al 255 codificados en windows cp1252, esto debido a que java codifica del -127 al 127 y los valores de 128 a 255 quedan fuera, y , usando el charset de windows cp1252 este problema queda solucionado.
Dicha aplicación ha sido probada en windows y codifica perfectamente el string.
El problema radica en que al ejecutar dicho codigo en Debian Linux usando netbeans 6.5.1 y jdk 1.6 el string de salida me lo codifica en UTF-8 que es el standar de Linux, y no importa que charset use en mi proyecto el string es codificado en UTF-8. Por ejemplo si el string es "5F 2A 84" en su valor hexadecimal al codificarlo en caracter es _*ä Y es esa secuencia de 3 caracteres los que envio en el string. Pero al codificar Linux en UTF-8 los valores que se reciben en hexadecimal son : 5F 2A E2 80 92 y los valores en ascii son _*ÔÇÆ Obvio no es lo que es espera.
Habiendome documentado vi que se puede cambiar la variable LANG y vi que Linux usa por defecto UTF-8 y casualmente la secuencia E2 80 92 es 84 pero en UTF-8, por lo que lo que requiero es ver de que manera puedo cambiar la codificacion de Linux para que me de los valores que requiero.
Ya intente con en_US.iso8859-1, en_US.iso8859-15, MX.iso8859-1 sin resultados.
Solo los caracteres arriba de 127 son codificados en 3 bytes en lugar de uno solo,
¿cómo puedo variar la configuracion de Linux para poder codificar y mandar los bytes que requiero?
¿cuál es la codificación que debo usar?
¿es posible?
Agradezco de antemano toda la ayuda que me puedan ofrecer
Muchas gracias.
Tengo una aplicación java J2SE que envia un String mediante un socket, dicho string contiene caracteres en ascii del 0 al 255 codificados en windows cp1252, esto debido a que java codifica del -127 al 127 y los valores de 128 a 255 quedan fuera, y , usando el charset de windows cp1252 este problema queda solucionado.
Dicha aplicación ha sido probada en windows y codifica perfectamente el string.
El problema radica en que al ejecutar dicho codigo en Debian Linux usando netbeans 6.5.1 y jdk 1.6 el string de salida me lo codifica en UTF-8 que es el standar de Linux, y no importa que charset use en mi proyecto el string es codificado en UTF-8. Por ejemplo si el string es "5F 2A 84" en su valor hexadecimal al codificarlo en caracter es _*ä Y es esa secuencia de 3 caracteres los que envio en el string. Pero al codificar Linux en UTF-8 los valores que se reciben en hexadecimal son : 5F 2A E2 80 92 y los valores en ascii son _*ÔÇÆ Obvio no es lo que es espera.
Habiendome documentado vi que se puede cambiar la variable LANG y vi que Linux usa por defecto UTF-8 y casualmente la secuencia E2 80 92 es 84 pero en UTF-8, por lo que lo que requiero es ver de que manera puedo cambiar la codificacion de Linux para que me de los valores que requiero.
Ya intente con en_US.iso8859-1, en_US.iso8859-15, MX.iso8859-1 sin resultados.
Solo los caracteres arriba de 127 son codificados en 3 bytes en lugar de uno solo,
¿cómo puedo variar la configuracion de Linux para poder codificar y mandar los bytes que requiero?
¿cuál es la codificación que debo usar?
¿es posible?
Agradezco de antemano toda la ayuda que me puedan ofrecer
Muchas gracias.
Valora esta pregunta


0