Pesquise

4 de jan. de 2014

Resolvendo problemas de codificação em PHP / MySQL / HTML

Como um dos trabalhos da disciplina de Especificação e Requisitos de Software do curso, foi dado um sistema em PHP para que fossem aplicadas modificações (adicionar ordenamento e filtro à uma tabela, criar um cadastro, etc).

Não sei se o sistema já estava assim, ou se foi porque foi desenvolvido em outro SO, mas ele estava com problemas de codificação (caracteres acentuados). Olhando o banco de dados através do phpMyAdmin, o texto parecia normal, mas na hora de transformar em HTML, as letras acentuadas não apareciam. Vi que o BD estava em UTF-8, e tentei setar a codificação do HTML, sem sucesso.


Daí, encontrei um artigo que esclareceu toda a situação dos problemas de codificação, que vão desde o editor de texto até o próprio banco de dados. Recomnendo a leitura.


Resumindo: além de setar a codificação do HTML para UTF-8:

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">

Eu tive que definir a codificação da conexão com o banco de dados no PHP:

mysql_set_charset('utf8', $link);

Onde $link é o resource retornado pela mysql_connect.

Nota: mencionei as funções mysql_*, porém elas estão deprecated, ou seja, não devem ser utilizadas, por diversos motivos. As soluções recomendadas são o conjunto mysqli_* (compatível com o conjunto anterior, porém com algumas modificações) ou então PDO (PHP Data Objects), mais complexo.

Nenhum comentário:

Postar um comentário