Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Cícero Martins

Inserir e buscar informações com acentuação no MySQL - UTF-8

Recommended Posts

Salve tripulação do iMasters,

 

Estou com uma dúvida que me parece boba mas que já tentei diversas soluções e não consigo solucioná-la.

 

- Tenho uma página .php (html5) cujo charset é utf-8;

- Tenho um banco de dados chamado sistema, seu collation utf8_general_ci;

- Dentro deste banco tenho várias tabelas, todas com collation utf8_general_ci;

- Dentro destas tabelas, todos os campos são utf8_general_ci.

 

Os problemas são o seguinte:

Quando faço um INSERT pelo phpMyAdmin, no próprio phpMyAdmin eu consigo visualizar os registros corretamente, com acentos, porém quando trago-os para php por meio de uma consulta, os acentos são substituídos por �.

Quando faço um INSERT pelo PHP, no phpMyAdmin eu não consigo visualizar os acentos, porém quando trago-os para o PHP os acentos são exibidos perfeitamente.

 

Tá, aí alguns podem dizer: Se inserindo pelo PHP e trazendo pelo PHP está dando certo, faça tudo pelo PHP. O maior dos problemas não é esse... O maior dos problemas é que visualizando pelo phpMyAdmin, os caracteres que possuem acento, são substituídos por dois caracteres.

Quer um exemplo?

Inserindo: Cícero Espártaco Martins

Resultado: Cícero Espártaco Martins

 

Ou seja, se possuo um campo VARCHAR(24), inserir CÍCERO ESPÁRTACO MARTINS daria problema, pois seria inserido apenas CÍCERO ESPÁRTACO MARTIN, pois o "á" do ESPÁRTACO, se tornou "á" (dois caracteres).

 

 

Gostaria de saber como resolvo este problema sem ter que ficar usando utf8_encode e utf8_decode em todas as variáveis, se não estou lascado!

 

 

Verifiquei que uma possibilidade é utilizar SET NAMES utf8. Mas pergunto, é correto fazer isso ou teria alguma outra forma de resolver o problema sem utilizar o SET NAMES?

 

 

Desde já meu muito obrigado à todos!

 

Atenciosamente,

Cícero Martins

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai kbeça não sei se você resolveu mas a solução eh a seguinte, como você fez todo o banco tem de estar em utf8.

 

Dai na pagina de conexão você coloca o seguinte:

 

mysql_connect(host, usuario, senha);

mysql_select_db(banco);

 

mysql_query("SET NAMES 'utf8'");

mysql_query('SET character_set_connection=utf8');

mysql_query('SET character_set_client=utf8');

mysql_query('SET character_set_results=utf8');

 

E todas as paginas tem q ter no cabeçalho:

 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

Corre pro abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, vamos la... Há varios problemas possíveis ai.

Questões:

 

1) A página que faz consulta está sendo chamada por include?

2) Se a primeira for sim:

a- Na página que chama (tipo index.php) está setado o charset UTF-8?

b- Na página de consulta está está setado o charset UTF-8?

3) Se está setado o charset, independente da resposta da 2, como está escrito o código?

 

Se possível, é sempre recomendado, poste ai o código fonte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mano no ultimo caso. faça o seguinte coloca seu code no bloco de notas e salva como nomedoarquivo.php codificação utf-8

se fica a mesma coisa tenta bota um header na pagina assim

 

header('Content-Type: text/html; charset=utf-8');

 

espero ajuda abrç

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.