Buenos Días,
Tengo una BBDD Oracle con codificación NLS_CHARACTERSET = WE8ISO8859P1 . Tengo una tabla con un BLOB en la que guardo imágenes de tipo jpg, gif, etc separados por tags [FICHERO] de esta forma..
[FICHERO nombre1.jpg] Codificación del fichero de imagen 1
[FICHERO nombre2.gif] Codificación del fichero de imagen 2
......
[FICHERO nombren.jpg] Codificación del fichero de imagen N
En java recupero este BLOB, hago un split para separar los trozos de cada imagen y el problema viene cuando esos trozos los grabo en ficheros separados.
La codificación parece estar bien, pero no es exactamente igual que el campo de la BBDD original, sustituye algunos caracteres por otros y las imágenes no se ven bien.
Creo que es un problema de codificación entre la BBDD y luego recuperar este texto como string. Llevo una semana pegándome con esto, alguien podría echarme una mano.
Dejo este trozo de código por si les puede ayudar, si necesitan cualquier información adicional no duden en consultarme.
En este codigo recupero el BLOB y tambien lo guardo en un fichero, de este fichero extraigo manualmente los trozos de la imagenes y las guardo en fichero separados y las imagenes se ven bien. Pero al hacerlo en JAVA con el String es cuando me falla.
// Recuperar BLOB
File file = new File(pathname);
fos = new FileOutputStream(file);
Blob bin = rs.getBlob("img_imagen");
InputStream inStream = bin.getBinaryStream();
int size = (int)bin.length();
byte[] buffer = new byte[size];
int length = -1;
while ((length = inStream.read(buffer)) != -1) {
fos.write(buffer, 0, length);
}
// La clob recuperado lo pongo en un String
cadena = new String(buffer);
// Después troceo el String y voy guardando los trozos en ficheros.
Saludos y gracias de antemano
Jose Miguel