PHP

Acentuação no PHP e MYSQL com UTF-8

Olá,

Acentuação ao gravar em banco de dados com linguagem php é um problema que todos programadores já passaram um dia, como eu passei a algum tempo e tive que quebrar a cabeça para resolver. É muito chato quando se desenvolve uma aplicação que ao tentar gravar informações no banco de dados que contenham caracteres não usuais como a Ç chegam no banco como Ã§, isso é extremamente  irritante. Chega de sofrimento, vamos então aos passos da solução.

MYSQL

O banco de dados deve ser criado com COLLATE utf8_general_ci, que define o banco como sendo utf-8.

CREATE DATABASE `database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Se já tiver um banco, faça a alteração com o comando a seguir.

ALTER DATABASE `bancodedados` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

PHP

No seu script PHP de conexão com o banco de dados, você deve mudar o charset para UTF-8 e após a conexão mysql é preciso executar os comandos mysql para setar o charset.

header('Content-Type: text/html; charset=utf-8');
mysql_connect($servidor,$usuario,$senha);
mysql_select_db($database);
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');

HTML

Nas páginas onde serão exibidas as informações inclua a meta tag abaixo para definir a página como UTF-8.

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

 

Espero que essa informação os ajudem, comentem se conseguiram.

 

Standard

4 thoughts on “Acentuação no PHP e MYSQL com UTF-8

  1. DiogoLessa says:

    Olá, muito bom seu tópico!

    Baseado nele que estou sentindo algumas dificuldades (charset=utf-8);
    Tô usando o Dreamweaver para criar uma página de blog em PHP, e no navegador estão aparecendo muitos erros como este:
    a quinta, � hora de resolver a parte pr�tica. Ap�s arrancar uma vit�ria heroica no gin�sio Ilhas Malvinas
    Criei um banco de dados MySql e o armazenamento deles é perfeito, mas quando vou exibir no navegador… aparece estes problemas com a acentuação!

    Testei as informações passadas nesse blog e não deram certas… agradeço qualquer ajuda!

    Um abraço!

    • raphael says:

      Diogo, provavelmente os arquivos que você criou no Dreamweaver não foram salvos no formato UTF-8.
      Voce pode converter todos os arquivos do seu projeto simplesmente abrindo os mesmos no bloco de notas do windows e clicando na opção ” arquivo” e em “salvar como” na parte inferior da tela a seguir tem o campo “codificação”, basta você selecionar a opção UTF-8. No Dreamweaver deve haver esta opção para configuração, mas como nao uso o Dreamweaver, nao sei dizer como fazer isso, mas nada que o Google não saiba. Faça o teste e me diga se conseguiu.

  2. Diogo Lessa says:

    Rafael

    utilizei o bloco de notas… salvei os arquivos em UTF-8… só que o erro persiste meu caro…

    inclusive e o banco mysql também está collation utf8_general_ci…

    andei pesquisando no google e não encontrei soluções para o meu problema…

    mas continuo na luta!

    Agradeço de novo!

    Diogo Lessa

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>