Problema com Java ISO-8859-1 UTF-8

5 respostas
F

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

5 Respostas

M

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");

F

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…

F

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.

F

Mais informações…
http://osdir.com/ml/db.mysql.java/2006-01/msg00016.html

M

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.

Criado 20 de novembro de 2007
Ultima resposta 20 de nov. de 2007
Respostas 5
Participantes 2