PostgreSQL - Problema con acentos y ñ con Java

 
Vista:

Problema con acentos y ñ con Java

Publicado por Rubén (3 intervenciones) el 19/11/2003 14:38:16
Hola,
Tengo problemas al recuperar e insertar datos con acentos o ñ en Posgtresql desde una aplicación Java, ya que me inserta y recupera ?.
He estado buscando información y no he conseguido encontrar nada. ¿Alguien me puede ayudar?
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Solución a tu problema

Publicado por William Parra (3 intervenciones) el 23/05/2005 18:10:59
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;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Solución a tu problema

Publicado por Rubén (3 intervenciones) el 24/05/2005 07:10:49
Hola.

Muchas gracias por tu respuesta. Ya había solucionado el problema creando la base de datos con la opcion -E UNICODE que te permite almacenar los datos directamente en la BBDD con codificación UNICODE (es la que Java reconoce directamente).

De todas maneras muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar