Acentuação MySQL

Pessoal,

Como funciona os acentos no MySQL? Um exemplo simples, tenho uma aplicação com uma tabela chamada bancos. No script de criação do BD eu faço alguns inserts de vários bancos: Por exemplo:

INSERT INTO `Bancos` VALUES (2,'104','Caixa Econômica Federal'); 

Via console do MySQL aparece assim:

mysql> select * from bancos; 
+----+--------+-------------------------+ 
| id | numero | banco                   | 
+----+--------+-------------------------+ 
|  1 | 001    | Banco do Brasil         | 
|  2 | 104    | Caixa Econômica Federal | 
|  3 | 237    | Bradesco                | 
|  4 | 409    | Unibanco                | 
+----+--------+-------------------------+ 
4 rows in set (0.00 sec) 

mysql> 

Beleza… aparece certinho o acento…
Só que em minha página JSP aparece um ? no lugar do acento:
“Caixa Econ?mica Federal”

Tudo bem… fiz uma opção para alteração do nome do banco na página JSP. Fiz um prepareStatement e tal como segue

this.alterarBanco = conn.prepareStatement("UPDATE bancos SET numero = ?, banco = ? WHERE id = ?"); 
   this.alterarBanco.setString(1, "104"); 
   this.alterarBanco.setString(2, "Caixa Econômica Federal "); 
   this.alterarBanco.setInt(3, 2); 
   this.alterarBanco.execute(); 

Depois de executado o select no conselo do MySQL ficou assim:

mysql> select * from bancos; 
+----+--------+-------------------------+ 
| id | numero | banco                   | 
+----+--------+-------------------------+ 
|  1 | 001    | Banco do Brasil         | 
|  2 | 104    | Caixa Econ¶mica Federal | 
|  3 | 237    | Bradesco                | 
|  4 | 409    | Unibanco                | 
+----+--------+-------------------------+ 
4 rows in set (0.00 sec) 

mysql> 

Ou seja… com um caracter estranho no lugar do acento…

Só que em minha página JSP a palavra ficou perfeita…
“Caixa Econômica Federal”

Alguém poderia me explicar o que acontece?

Para resolver isso eu cadastro tudo via aplicação… beleza… resolveu o problema… mas surgiu outro… o Backup…

Fiz um backup do banco MySQL como segue:

mysqldump -u root --password=mysql banco > "D:\Documents and Settings\Administrador\Desktop\backup.sql" 

Beleza… gerou o script… o problema é que gerou assim…

INSERT INTO `bancos` VALUES (1,'001','Banco do Brasil'),(2,'104','Caixa Econômica Federal'),(3,'237','Bradesco'),(4,'409','Unibanco'); 

Ou seja… com os acentos… se rodar o script caiu no mesmo problema… no console os acentos certinhos e nas páginas o ? no lugar!!!

Alguém ai tem uma luz?

Obrigado…

Adiciona no jsp:

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Abraço.

Olá caro amigo.

Bem estes erros são comuns, geralmente eles acontecem quando você utiliza um banco e sistema ja prontos, ai quando você importa ele acontece isso, principalmente no MySQL.

Bem mais se esse não for o caso tente atualizar sua tabela, o problema deve ser por que você esta inserindo direto no banco e visualizando no programa, por isso ocorre o erro, mais se você inserir e consultar tudo pelo programa verá que os acentos ficam perfeitos.

Caso ainda permaceça o erro, ai sim você tem um problemão rs, espero ter ajudado.

Já tinha feito isso e mesmo assim ocorre o mesmo erro… Valeu…

Não é um sistema pronto… é um simples exemplo que eu mesmo desenvolvi…

Sim… Como eu disse no post… o problema ocorre quando faço insert direto no banco…

[quote]
mais se você inserir e consultar tudo pelo programa verá que os acentos ficam perfeitos.
Caso ainda permaceça o erro, ai sim você tem um problemão rs,[/quote]
Sim… eu sei… Como eu disse no post se eu inserir pela aplicação fica blz… se for direto da erro na hora de visualizar…

Valeu…

Tá usando tomcat??
Entra no admin do tomcat e lah no tag Encoding coloca:

iso-8859-1

Cara, não sei se vai dar certo mas você pode tentar:

Ao gerar o backup pelo mysqldump, [u][i]não opte[/u][/i] pelo dump “compacto” (parâmetro --compact).

Ficando algo como:

 mysqldump --port=1111 --user=guj --password=jug --result-file="x:\blablabla\blublublu\meuDump.sql" --add-drop-table --databases foo faa fee

Espero que dê certo.