Corrigir charset em páginas PHP
Definição de Charset
“Conjunto de caracteres (character set), é comumente referênciado apenas como charset. Os charsets foram feitos como uma biblioteca de caracteres que podemos utilizar, para serem utilizados com propósitos gerais em computadores, softwares, browsers etc …
Os charsets mais conhecidos são os da série ISO-8859 e os da família Unicode (UTF-8, UTF-16 e UTF-32).”
Fonte: http://revolucao.etc.br/archives/charsets-e-encodings/
Nos últimos anos já se tornou uma realidade o uso frequente do charset UTF-8 em várias páginas WEB, o próprio google já alertava sobre essa crescente nesse artigo que foi publicado em 2008, ou seja, 6 anos atrás. Mas ainda é possível encontrar profissionais utilizando charsets da família ISO-8859, mas vale lembrar que o suporte a várias línguas e milhares de caracteres torna o uso do UTF-8 em páginas WEB, XMLs, Bancos de dados e etc., a melhor prática nos dias de hoje.
4 Dicas de como corrigir Charset
1 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> |
Atualização Agosto / 2015: HTML 5 passou a ser recomendação oficial pela W3C então a meta para informar o charset agora segue o padrão abaixo:
1 |
<meta charset="UTF-8"> |
2 – Conteúdo de páginas impressos direto do PHP sem relação com banco de dados, geralmente em includes com o comando echo ou print():
1 |
<?php header('Content-type: text/html; charset=utf-8'); ?> |
RESPOSTA: Estou demonstrando a solução para esse tipo de problema usando como exemplo uma conexão em PDO mas com a extensão mysqli_ também é possível setar essa configuração. Observem que para o banco de dados MySQL seto no momento da conexão um comando “SET NAMES UTF8” e passo a array $opcoes no momento da instanciação do objeto, essa prática já basta para reforçar que essa conexão vai trafegar dados com esse charset.
1 2 |
$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'); $pdo = new PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . "; charset=" . CHARSET . ";", USER, PASSWORD, $opcoes); |
4 – Verifique o encoding que seu editor de texto ou IDE está gravando os scripts, nesse exemplo estou usando o sublime para gravar como UTF8, mas praticamente todos editores e IDEs possuem essa configuração.
Bom pessoal é isso, espero que essas dicas ajudem o leitor na “batalha” diária contra os erros de charset.
Até a próxima ….