Hola la solución la estuve buscando por un buen tiempo. Consiste basicamente en que leas los datos de la base de datos con un getInputStream, a partir del cual usas la siguente clase , para que le establescas la codificacion que tienes y listo.
/*
* convierteALatin.java
* Created on 16 de mayo de 2005, 08:24 AM
* Se encarga de la xonversion a codificación, según el usuario requiera de datos
* en forma de InputStream, que pueden ser traidos de diferentes fuentes de datos,
* y que eventualmente las vistas no muestran bién. Por defecto tiene la codificación
* UTF-8 que imprime caracteres como la ñ y las tildes. Otra codificación compatible es la
* 8859_1 que corresponde a ISO-LATIN-1. El segundo constructor permite al usuario crear
* una instancia de la clase con la codificación que el usuario prefiera.
*/
package terminal;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.io.IOException;
/**
* <p>Titulo: Clase para la gestion de Stream de entrada de Base de Datos </p>
* <p>Description: Clase para la conversion a los diferentes tipos de codificación
* <p>Copyright: wilparra(c) 2005</p>
* <p>Company: Universidad Pedagógica y Tecnológica de Colombia </p>
* @author William Enrique Parra Alba
* @version 1.0
*/
public class convierteALatin {
/**
* Metodo de tipo Static que devuelve un String con los datos codificados en
* codificación UTF-8
* @param pStream Flujo de datos al que se aplicará tratamiento.
* @return Cadena de caracteres codificados en UTF-8
*/
public static String codificaALatin(InputStream pStream)
{
return codifica(pStream,"UTF-8");
}
/**
* Metodo de tipo Static que devuelve un String con los datos codificados en
* la codificación que el usuario requiera
* @param pStream Flujo de datos al que se aplicará tratamiento.
* @return Cadena de caracteres codificados en la codificación de usuario.
*/
public static String codificaALatin(InputStream pStream,String pCodificacion)
{
return codifica(pStream,pCodificacion);
}
/**
* Efectua la codificacion a los caracteres según la función que haya solicitado.
*/
private static String codifica(InputStream pStream, String pCodificacion)
{
String str= null;
if(pStream != null)
{
try{
// Cambio del tipo de Codificación java. Esta corresponde a ISO-LATIN-1
//InputStreamReader isr = new InputStreamReader(pStream,"UTF-8");
InputStreamReader isr = new InputStreamReader(pStream,pCodificacion);
Reader in = new BufferedReader(isr);
StringBuffer buf = new StringBuffer();
int ch;
while((ch = in.read())>-1)
{
buf.append((char)ch);
}
in.close();
str = buf.toString();
return str;
}
catch(UnsupportedEncodingException ex)
{
ex.printStackTrace();
}
catch(IOException ex1)
{
ex1.printStackTrace();
}
}
return str;
}
}