Retroceder   Foros del Web > Programación para sitios web > Java y JSP

Respuesta
 
Herramientas Desplegado
Antiguo 13-sep-2007, 05:30   #1 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Codificacion en Java

Hola,

¿Qué codificación tiene por defecto Java?¿UTF-8 ó ISO-8859-1?

Y la otra pregunta es, ¿como puedo cambiar de una codificación a otra?

Es que tengo problemas con los acentos debido a la codificación.

Muchas gracias.
luisicozgz está desconectado   Responder Citando
Antiguo 13-sep-2007, 06:59   #2 (permalink)
Colaborador
alvlin es realmente agradablealvlin es realmente agradablealvlin es realmente agradablealvlin es realmente agradablealvlin es realmente agradablealvlin es realmente agradable
 
Avatar de alvlin
 
Fecha de Ingreso: julio-2005
Ubicación: Rodeado de indios... por suerte son amigos :)
Mensajes: 3.715
Enviar un mensaje por MSN a alvlin Enviar un mensaje por Yahoo  a alvlin Enviar un mensaje por Skype™ a alvlin
Re: Codificacion en Java

Java trabaja con UTF-16, por lo que deberías guardar el texto en UTF-8 o UTF-16.


Saludos.
__________________
Mi Blog

"Por ahora casi nadie me trata de subnormal sin que a los 4 segundos se arrepienta. Porque yo a mis semejantes quiero a todos por igual: en cubitos de 40x40"
alvlin está desconectado   Responder Citando
Antiguo 13-sep-2007, 08:00   #3 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

Ummm, en el tema de la codificación hay muchos factores a tener en cuenta, y hay que tener en cuenta todo lo que se comunica.

¿Exactamente cual es el problema que tienes? Lo más típicos son que al escribir una pagina HTML te salgan mal escritos los caracteres no ASCII, o que al recibir los datos de un formulario, se reciban mal los caracteres no ASCII. Eso es lo más tipico.

S!
GreenEyed está desconectado   Responder Citando
Antiguo 13-sep-2007, 09:17   #4 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Re: Codificacion en Java

Hola,

Mi problema exactamente es que al recibir unos datos en Java desde XML-RPC no me coge los acentos y entonces no me salen los resultados. En la consola de Java me sale esto:

[Fatal Error] :95:32: Invalid byte 2 of 2-byte UTF-8 sequence.

¿Quiere decir entonces que Java esta codificado en UTF-8? Es uue no entiendo bien el error.

Yo trabajo con Eclipse y no estoy seguro donde cambiar la codificacion.Yo la he cambiado en Window-Preferences-General-Content Types y luego en Java Source File he puesto UTF-8.

¿Es asi?

Gracias
luisicozgz está desconectado   Responder Citando
Antiguo 13-sep-2007, 13:20   #5 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

Lo que quiere decir es que estas recibiendo un XML que se supone está codificado en UTF-8 pero en realidad esta mal codificado y seguramente te lo estan enviando como ISO-88591.

Por ejemplo, un documento XML declarado como UTF-8 (o sin declarar ya que es la codificacion por defecto) que tenga acentos en el texto está mal.

S!

PD: El problema no es tu codigo, es el texto que estas recibiendo por XML-RPC.
GreenEyed está desconectado   Responder Citando
Antiguo 14-sep-2007, 01:37   #6 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Re: Codificacion en Java

Gracias por la ayuda aunque cada vez me surge alguna duda mas.

En PHP (Servidor) tengo declarada esta linea para la creacion de la cabecera del XML.

<?xml version="1.0" encoding="utf-8"?>

¿Es esto suficiente para que la codificacion del XML sea UTF-8?
Luego en Eclipse he puesto que la codificacion del codigo fuente de Java sea en UTF-8.

Los datos que yo recibo en Java con XML-RPC son estos:

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><array>
<data>
<value><struct>
<member><name>nombre</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>direccion</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>codigo_postal</name>
<value><string>50619</string></value>
</member>
<member><name>zona</name>
<value><int>1</int></value>
</member>
<member><name>poblacion</name>
<value><int>1</int></value>
</member>
</struct></value>
</data>
</array></value>
</param>
</params>
</methodResponse>

Aunque todavia tengo el siguiente error:
org.xml.sax.SAXParseException: Invalid byte 2 of 2-byte UTF-8 sequence.

Gracias.
luisicozgz está desconectado   Responder Citando
Antiguo 14-sep-2007, 02:02   #7 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

Exacto, el problema es que tu estás diciendo que el documento XML está codificado en UTF-8 cuando no en realidad es cierto (el acento en ANTÓN por ejemplo).
Poner la cabecera a UTF-8 no hace nada, es solo una declaración, asi que te quedan dos opciones.

1.- Declaras correctamente la codificacion del XML: Deberias ponerle
Código:
<?xml version='1.0' encoding='iso-8859-1'?>
2.- Codificas correctamente el texto para que sea UTF-8. Ello implica codificar los caracteres no ASCII siguiendo una tabla como esta ->
http://www.tony-franks.co.uk/UTF-8.htm Por ejemplo, ANTÓN sería ANT$#211;N, sustituyendo el $ por un & (si lo pongo me lo interpreta el foro). En vez de hacerlo uno a uno se puede usar un algoritmo que hay para ello, que se explica aqui: http://www1.tip.nl/~t876506/utf8tbl.html

S!
GreenEyed está desconectado   Responder Citando
Antiguo 14-sep-2007, 02:22   #8 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Re: Codificacion en Java

Hola,

Entonces veo que la forma mas fácil es la de poner en la cabecera del xml esta linea

<?xml version='1.0' encoding='iso-8859-1'?>

y luego cambiar la codificacion de Java en el Eclipse a iso-8859-1.

¿Es así como podría leer bien los acentos?

Esta tema de la codificación es un tema bastante complejo para los iniciados en el tema.

Gracias
luisicozgz está desconectado   Responder Citando
Antiguo 14-sep-2007, 02:35   #9 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

La codificación de Java no afecta para nada. Es la codificación del XML lo que cuenta. La idea es que cada texto, XML, Java, Stream que viaja por la red, tiene una codificación y mientras esten todas bien especificadas, todo funciona ya que las conversiones se hacen automaticas. El problema es cuando alguna especificacion es incorrecta o no se hacen las conversiones como toca.

Pero tener tu codigo Java en UTF-8 o ISO solo afecta a tu programa Java.

Así que si le pones que el XML es de ese tipo, ya debería funcionar. A no ser que en algun sitio le tengas puesto que lo que recibes es UTF-8, lo cual no será cierto ya.

S!

Y si, es un tema complejo, no solo para iniciados . Yo todavía tengo que pensarmelo 3 o 4 veces y aun asi a veces me olvido alguna codificacion y zas. Pero al menos sabiendo como va el tema, se reconocen los errores más rapido y encuentras soluciones antes. Eso si, los bugs en los navegadores tampoco ayudan mucho .
GreenEyed está desconectado   Responder Citando
Antiguo 14-sep-2007, 03:17   #10 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Re: Codificacion en Java

Hola,

Muchisimas gracias pero hay forma de que lo haga funcionar.

Ya he puesto la linea de codificacion iso-8859-1 en el xml:

<?xml version="1.0" encoding="iso-8859-1"?>

Ahora, como me has comentando, para los archivos Java lo he dejado como estaba y he cambiado en Eclipse para los XML files la etiqueta Encoding y he puesto ISO-Latin-1, que me imagino que debe corresponder con la iso-8859-1 porque esa codificacion no estaba en la lista.

Aun asi me sale el mismo error de Invalid byte 2 of 2-byte UTF-8 sequence.

Y una duda que me entra porque no me aclaro bien.¿Porque ponga la codificacion que ponga siempre sale el error ese de UTF-8?

Gracias
luisicozgz está desconectado   Responder Citando
Antiguo 14-sep-2007, 03:32   #11 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

¿El XML que te llega sigue siendo el mismo?
Código:
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value><array>
<data>
<value><struct>
<member><name>nombre</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>direccion</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>codigo_postal</name>
<value><string>50619</string></value>
</member>
<member><name>zona</name>
<value><int>1</int></value>
</member>
<member><name>poblacion</name>
<value><int>1</int></value>
</member>
</struct></value>
</data>
</array></value>
</param>
</params>
</methodResponse>
¿?
GreenEyed está desconectado   Responder Citando
Antiguo 14-sep-2007, 03:47   #12 (permalink)
luisicozgz ha deshabilitado el karma
 
Fecha de Ingreso: agosto-2007
Mensajes: 49
Re: Codificacion en Java

Si, es exactamente el mismo.
luisicozgz está desconectado   Responder Citando
Antiguo 14-sep-2007, 05:29   #13 (permalink)
GreenEyed tiene algunos puntos positivos de karma
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.495
Re: Codificacion en Java

Lo que tienes que conseguir es que el que te llegue sea así:

Código:
<?xml version="1.0" encoding="iso-8859-1"?>
<methodResponse>
<params>
<param>
<value><array>
<data>
<value><struct>
<member><name>nombre</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>direccion</name>
<value><string>HOTEL ANTÓN</string></value>
</member>
<member><name>codigo_postal</name>
<value><string>50619</string></value>
</member>
<member><name>zona</name>
<value><int>1</int></value>
</member>
<member><name>poblacion</name>
<value><int>1</int></value>
</member>
</struct></value>
</data>
</array></value>
</param>
</params>
</methodResponse>
Mientras te llegue el encoding sin especificar y el acento ese en ANTÓN, te dara error, por que además es un error. El programa que genera el XML que recibes lo hace mal.

S!
GreenEyed está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Desactivado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 13:49.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93