rMonte

php, mysql, jquery e tudo que me der na telha

9

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.

 

CharsetMysqlPHP

Raphael Monte • 12 de março de 2011


Previous Post

Next Post

Comments

  1. DiogoLessa 8 de setembro de 2011 - 14:50 Reply

    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 8 de setembro de 2011 - 19:12 Reply

      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 8 de setembro de 2011 - 20:35 Reply

    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

  3. Daniel 21 de novembro de 2012 - 15:49 Reply

    Valeu a dica! Funcionou blzinha, este problema é realmente chato… Abraço.

  4. Ricardo Bellanda 6 de setembro de 2013 - 19:27 Reply

    Amigo, muito obrigado, ajudou muito.
    Realmente esse problema é extremamente chato!
    Se não fosse a torre de babel teríamos um padrão único. rsssss

  5. Sergio Moreira 23 de novembro de 2013 - 4:48 Reply

    Valewwwww…

    Sou iniciante e estava perdidoooo rsrs

    funcionouuu legall

  6. José Milton 25 de junho de 2014 - 14:50 Reply

    Olá, muito bom seu tópico!

    Baseado nele resolvemos o problemas de acentuação no PHP e MYSQL com UTF-8.
    Deus abençoe!
    José Milton

  7. orion 15 de outubro de 2014 - 21:16 Reply

    Gostei! ajudou muito já tinha tentado de quase tudo só não a ultima query que foi a que deu resultado… Obrigado!

    • Raphael Monte 7 de novembro de 2014 - 11:01 Reply

      Fico feliz de poder ter ajudado.

Deixe uma resposta

Your email address will not be published / Required fields are marked *

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>