Pessoal, estou com o seguinte problema.
Tenho uma tabela em um banco MySQL com codificação latin-1. Esse campo é um BLOB e contém palavrás como notificação, público etc, ou seja, palavras com acento na codificação ISO-8859-1.
Minha aplicação consulta essa tabela, lê a coluna que tem esses textos e gera uma mensagem gravando em outra tabela, com base nos textos lidos. O problema esta neste ponto, pois quando o Java lê essa coluna, esta convertendo para UTF-8, colocando ?? onde deveria ter acentos, ç etc.
O que fazer para corrigir isso.
Att,
Fred
Pega o conteúdo do blob como array de byte e use o overload do contrutor de String.
byte[] asdf = blob.getBytes(1, blob.length());
String qwert = new String(asdf, "Latin-1");
Fiz assim,
byte[] bytes = string.getBytes(); //minha versão do jdk é 1.5 e não tem o método getBytes(int, int)
String stringCodificada = new String(bytes, "ISO-8859-1"); //se eu colocar "Latin-1" é gerada uma UnsupportedEncodingException
E não funcionou…
Pessoal, parece ser bug do MySQL (http://bugs.mysql.com/bug.php?id=9039)
Converti a coluna de BLOB para TEXT e funcionou…
Obrigado pela atenção.
vixi, você tá pegando o conteudo do blob como string??
tipo… vc recupera do banco assim:
//popula o resultSet
Blob blob = resultSet.getBlob(NOME_COLUNA);
byte[] bytes = blob.getBytes(1L, blob.length());
String string = new String(bytes, "ISO-8859-1");
aqui roda de boas.