Java + linux + mysql não reconhece acentos[Resolvido]

Boa tarde,

Depois de muitas tentativas e alternativas que estão na net e aqui mesmo no fórum, resolvi postar, pois não achei nenhuma solução, pois, ja estou há 3 dias e ninguém consegue me ajudar.

Tenho um aplicativo java que cuida da parte de ETL, e quando rodo no Windows grava certinho , ou, seja, os dados com acento gravam perfeitamente. Porém quando coloco no linux(ubuntu), não salva com o acento de jeito nenhum.

Primeiramente tentei trocar o driver do mysql, mas os dados ao invés de aparecer com uns “quadradinhos malucos” aparecem com “?” no lugar do acento. Fora isso, peguei o banco que estava no Windows e restaurei no linux achando que poderia ser o charset e o collation, no entanto para minha surpresa os dados restauram com perfeição e os acentos vieram tudo certinho.

No meu arquivo XML de configuração com os bancos está definido assim: <?xml version="1.0" encoding="ISO8859_1"?> e no banco o charset está assim:

Character Set: cp1252 West European 
Collation: latin1_swedish_ci

Consultando o link http://dev.mysql.com/doc/refman/4.1/pt/charset-show-charset.html , aparentemente está OK.

Agora to achando que talvez seja o sistema operacional, até por que, sou iniciante em linux.

E agora, o que vocês me sugerem ?

Olá

Tente verificar como esta sendo gravado os daddos no banco, caso esteje perfeito. Alguma coisa dentro da sua aplicação.
Se for web verifique o encode das JSP´s.

Ou se estiver todos quebrados na base, verifique se sua aplicação esta gravando corretamente.

Eu uso latin1 ou ISO 88-59-1 para mysql.
No postgre 8.1 - Latin1 e no 8.4 - UTF-8

Um teste tambem que pode ser feito é trocar de banco de dados.

Espero ter ajudado
Flwsss

Opa blz?
Tche eu não sei se pode ajudar, mas ja tive um problema deste tipo onde tive que configurar a variavel locale do tomcat… não lembro de mais detalhes porque já faz um tempinho que ocorreu esse problema… mas talvez te ajude…

ISO 88-59-1 ? Esta correto isso? até agora não tinha visto essa codificação. Conforme disse, no windows tah belezinha… o problema tah no linux. Estava pensando será que o encoding do linux não está atrapalhando(por que o padrão do ubuntu é UTF-8), ou será que não tem nada ver? E quanto a aplicação é desktop e nela tah tudo OK, até por já rodei em linux outras vezes e nunca deu este problema.

[quote=leoduval]Opa blz?
Tche eu não sei se pode ajudar, mas ja tive um problema deste tipo onde tive que configurar a variavel locale do tomcat… não lembro de mais detalhes porque já faz um tempinho que ocorreu esse problema… mas talvez te ajude…[/quote]

Hum… no momento não to usando o tomcat, é somente o java que grava no mysql no S.O linux

Bom dia Galera,

Consegui resolver!!! Vou deixar os passos que eu fiz aqui pra quem precisar. O meu mysql estava com os charset’s e collation com utf-8.

1 - Verificar os charset e collation do mysql através do comando :

mysql -u root -p
Enter Password: ***

mysql -> SHOW VARIABLES LIKE 'character%'  -- lista todos os character definidos para o seu mysql
mysql -> SHOW VARIABLES LIKE '%COLLATION%'  -- lista os collation definidos para o seu mysql

No meu caso estava tudo como utf-8, mas eu precisava alterar o CHARSET para latin1 e o COLLATION para latin1_swedish_ci que é o padrão da minha aplicação.
Existem 2 forma distintas de se fazer isso:
A primeira entrar no diretório /etc/mysql/ e editar o arquivo my.cnf. E a segunda e pra mim foi melhor até por que sou usuário de windows é através do mysql administrator. Mas para usar a interface gráfica é necessário alterar as permissões do diretório dando permissões de leitura e escrita. Após entrar no mysql é somente ir em: "Startup Parameters -> (irá aparecer uma tela, escolha a o opção mysqld) ->Advanced " e setar nos campos "Def.Char Set : (no meu caso latin1)" e "Default Collation: (latin1_swedish_ci)".

2- No entanto, ao fazer este processo, ainda continuava os erros dos acentos . Conforme eu desconfiava o Ubuntu estava com o encoding = UTF-8. Pode se constatar isso através do comando “locale”.
Consegui alterar o encoding através dos passos deste link: http://www.vivaolinux.com.br/artigo/Encoding-do-Postgres-%28latin1%29-e-encoding-do-SO-%28Debian-Ubuntu%29/

Vlw e fica a dica para quem precisar.