PHP: Utilizando UTF-8 corretamente

junho 7, 2008

Há um tempo atrás precisei fazer um site que armazenava e recuperava dados em japonês e português tudo na mesma base de dados. A solução para isso foi utilizar codificação UTF-8, esquecendo o famoso ISO-8859-1 (Latin).
Utilizando UTF-8 corretamente você se livrará de todos os problemas de acentuação que poderão ser causados em sua página e se livrar de vez de funções como utf8_encode() e derivadas.
Apesar de consumir alguns bytes a mais em certos caracteres, você terá a vantagem de trabalhar com qualquer tipo de idioma.

O segredo está em deixar TUDO na codificação UTF-8.

  • Arquivos .php devem ser salvos por sua IDE nesta codificação. (Qualquer editor possui esta opção, como por exemplo o Zend Studio ou Eclipse)
  • Meta tag dos cabeçalhos HTML <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″/>
  • Cabeçalhos em seus arquivos PHP
    header(“Content-Type: text/html; charset=UTF-8”, true);
  • Banco de dados, tabelas e campos com collation utf8_general_ci
  • Sempre após a conexão com o banco alterar codificação.
    Após conectar (mysql_connect) e antes de efetuar qualquer operação deve-se utilizar a função mysql_set_charset(“utf8”, $conexao);    

    Caso seu PHP seja inferior a 5.2.3, é possível utilizar dois SQL ao invés da função acima.
    mysql_query(“SET NAMES ‘UTF8′”, $conexao);
    mysql_query(“SET CHARACTER SET ‘UTF8′”, $conexao); 

    [UPDATE]

    As instruções SQL acima podem ser utilizadas com qualquer função ou classe (PDO, ADODB, etc)

    [/UPDATE]

Após feito essas alterações, você deve limpar suas tabelas e inserir novamente os dados para que a partir de agora sejam gravados e lidos na codificação correta. Outra opção é converter seus registros utilizando as funções CAST() ou CONVERT() do seu banco de dados.
Lembrando que os exemplos acima foram feitos utilizando MySQL, mas qualquer banco possui instruções semelhantes.

Anúncios

One Response to “PHP: Utilizando UTF-8 corretamente”

  1. Paulo Rogerio Says:

    Muito bom o artigo, está de parabéns, foi de muita ajuda para mim.


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: