Ir para conteúdo
Fórum Script Brasil
  • 0

Mysql e Acentuação


Guest johnmclane

Pergunta

Guest johnmclane

Aos que não querem ler muito, explico resumido: quando insiro algo pelo php num banco mysql, ele exibe correto via php mas exibe com problemas de acentuacao no terminal. Quando insiro algo diretamente no banco pelo terminal, ele exibe correto no terminal mas quando recupero pelo php os acentos saem errados. Sei que trata-se de algo relacionado aos charsets, mas não estou conseguindo resolver.

Aos que preferem mais detalhes, explico:

Não consigo entender o que está errado. Só falta esse pequeno ajuste pra colocar no ar, já quebrei a cabeça e não sei resolver. Tomara que alguém me ajude.

Tenho uma tabela que possui entre outros campos númericos, varchars dessa forma descritos:

| id_imovel | int(10) unsigned | NULL | NO | PRI | NULL | auto_increment

| nome | varchar(255) | utf8_unicode_ci | NO | | |

| endereco | varchar(255) | utf8_unicode_ci | NO | | |

Meu banco está assim:

mysql> show create database db_respeito;

+-------------+----------------------------------------------------------------------+

| Database | Create Database |

+-------------+----------------------------------------------------------------------+

| db_respeito | CREATE DATABASE `db_respeito` /*!40100 DEFAULT CHARACTER SET utf8 */ |

+-------------+----------------------------------------------------------------------+

1 row in set (0.00 sec)

Se eu entrar no terminal e inserir algo como:

insert into tb_imoveis values (NULL, 'Açaí do João', 'Atrás do Sótão',2,2)

+--------------+-----------+

| nome | id_imovel |

+--------------+-----------+

| Açaí do João | 1858 |

+--------------+-----------+

Porém caso eu insira pelo php com algo como

$query = "insert into tb_imoveis values (NULL, 'Açaí do João', 'Atrás do Sótão',3,3)";

$resultado = insereBD($query);

e depois consulte pelo terminal aparecem problemas de acentuação

+--------------+-----------+

| nome | id_imovel |

+--------------+-----------+

| AþaÝ do JoÒo | 1859 |

+--------------+-----------+

Se agora eu consultar esses dados pelo php o resultado aparece lindamente no navegador. Estou fazendo algo como:

$query = "Select nome from tb_imoveis where id_imovel=1859";

$resultado=acessaBD($query);

$linha = mysql_fetch_array($resultado);

echo $linha['nome'];

Pelo que eu tenho pesquisado, acredito que o problema é que o mysql está usando um charset e o php (ou o apache, não sei) esta usando outro. Porem, como ajeito? Eu tentei deletar o banco de dados, e criei um todo latin1 pra ve se resolvia, mas nesse caso passou a exibir errado tanto ná página em php quanto no banco de dados. O banco "todo latin1" a que eu me refiro eu criei assim:

CREATE TABLE `tb_imoveis` (

`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,

`nome` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL ,

`endereco` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL

) ENGINE = innodb CHARACTER SET latin1 COLLATE latin1_swedish_ci;

Minhas variáveis do sistema estão assim:

mysql> show variables like 'c%';

+--------------------------+-----------------------------------------------+

| Variable_name | Value |

+--------------------------+-----------------------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | h:\wamp\bin\mysql\mysql5.0.45\share\charsets\ |

| collation_connection | latin1_swedish_ci |

| collation_database | latin1_swedish_ci |

| collation_server | utf8_general_ci |

| completion_type | 0 |

| concurrent_insert | 1 |

| connect_timeout | 5 |

+--------------------------+-----------------------------------------------+

14 rows in set (0.00 sec)

O que faço? Alguém me ajuda?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest johnmclane

Valeu pela resposta rápida, preciso entregar esse trabalho pra ontem. Alterei e o problema continua.

Alterando o charset como voce sugeriu o php passou a exibir errado os caracteres. Ou seja, com "header("Content-Type: text/html; charset=UTF-8",true);" o que é inserido via php, fica errado no php e no terminal. Sem o header (com ISO-8859-1) o que é inserido via php é exibido certo na página mas fica errado no terminal (e o que é inserido no terminal fica certo no terminal e errado na pagina).

Por que isso? Alguma outra sugestão?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...