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

Manejar el símbolo de € procedente de una BD codificada en ISO-8859-1

Estas en el tema de Manejar el símbolo de € procedente de una BD codificada en ISO-8859-1 en el foro de Java en Foros del Web. Hola Me ha surgido la siguiente necesidad. Tengo una aplicación web que trabaja contra una base de datos codificada en ISO-8859-1. Si bien las jsp ...
  #1 (permalink)  
Antiguo 10/02/2011, 11:13
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 9 meses
Puntos: 188
Manejar el símbolo de € procedente de una BD codificada en ISO-8859-1

Hola

Me ha surgido la siguiente necesidad.

Tengo una aplicación web que trabaja contra una base de datos codificada en ISO-8859-1. Si bien las jsp tienen el charset ISO-8859-15 y muestran el símbolo del euro (€) correctamente, en la BD se guarda como un interrogante (¿).

El problema es que tengo que generar un excel con POI a partir de una plantilla y enviar también un correo, y para esos casos el símbolo del euro viene tal y como se recupera de la base de datos, con lo cual no es capaz de mostrarlo correctamente.

Tanto en el excel como en el correo se me muestra así ("[]"). Y vendría dentro de un String.

Tengo entendido que java viene codificado en UTF-16.

Me gustaría saber si existe alguna forma de recoger la variable del euro errónea y recodificarla para que se muestre correcta en el excel y en el mail.

Lo más cerca que he visto a java hacer esto es utilizando DecimalFormatSymbols, pero para convertir un número en un decimal al que se le agrega el símbolo monetario del país segun el locale.

Si alguien me puede ayudar lo agradecería.

Ejemplo: Para un String x
Este texto tiene el [] contenido en su interior
Querría que se viese como
Este texto tiene el € contenido en su interior

Un saludo
  #2 (permalink)  
Antiguo 10/02/2011, 18:28
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años, 1 mes
Puntos: 306
Respuesta: Manejar el símbolo de € procedente de una BD codificada en ISO-8859-1

El tema de la codificación siempre dando dolores de cabeza.

Supongo que dándole vueltas podrías llegar a solucionar el que se te grabe mal, pero si quieres un método para ir tirando, te digo el mío.

Replace.

Sí, lo que hago en estos casos es hacer que java me muestre la codificación del caracter "[]" (supongo que es un cuadrado, no corchetes) en utf-16 (codepoint). Después haces un replace de ese caracter (\uFFFF) cada vez que recuperas un campo sospechoso de llevar un €
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 10/02/2011, 22:52
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 8 meses
Puntos: 454
Respuesta: Manejar el símbolo de € procedente de una BD codificada en ISO-8859-1

Hola:

Nunca he probado, así que no sé si funciona, pero una posible opción que se me ocurre es tratar de leerlo como bytes directamente y luego String tiene un constructor que admite esos bytes y la codificación que usan esos bytes.

Java tiene también clases que quizás puedan ayudarte a convertir de unos charset a otros. Echa un ojo al paquete http://download.oracle.com/javase/1....e-summary.html

Se bueno.
__________________
Apuntes Java
Wiki de Programación

Etiquetas: bd, iso, manejar
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 15:23.