programação,

Configurando charset de aplicações PHP

Diogo Matheus Diogo Matheus Seguir 23/02/2015 · 3 minutos de leitura
Configurando charset de aplicações PHP
Compartilhar

Imagine que você está desenvolvendo uma aplicação para internet em seu ambiente local, chegou o dia de colocar o sistema em produção, um servidor compartilhado, hospedagem. Além de verificar se está tudo de acordo com as funcionalidades, uma das preocupações neste cenário é analisar se o charset está devidamente configurado na aplicação e banco de dados.

O que é charset?

Charset, Character Set, é o conjunto de caracteres que são utilizados para criação de documentos, bancos de dados, sites, etc. Cada charset possui uma lista de caracteres disponíveis, sendo estes representados por uma posição de referência.

Confira alguns caracteres disponíveis no charset ASCII.

Posição Caractere
65 A
66 B
67 C
68 D
69 E
70 F

Qual é a importância do charset?

O charset de um documento, indica ao browser, navegador, qual codificação foi utilizada, possibilitando que o documento seja interpretado, exibindo suas informações corretamente ao usuário. Caso exista algum tipo de incompatibilidade entre o conteúdo, charset declarado e charset utilizado para salvar o documento no seu editor, exemplo Eclipse, isso poderá comprometer sua exibição, gerando possíveis problemas, como erro na codificação do documento ou caracteres incorretos sendo exibidos na aplicação.

Configurando charset de uma aplicação PHP

Existem 127 charsets disponíveis para uso na internet, onde os mais utilizados são ISO-8859-1 e UTF-8, se você está desenvolvendo algum conteúdo, terá que decidir qual codificação irá utilizar. O charset UTF-8 é uma recomendação, pois cobre quase todos os caracteres e símbolos do mundo, confira os passos recomendados para configurar o charset de sua aplicação.

Recomendações para configurar o navegador

Informar o charset no início do script, junto ao tipo do conteúdo, nesse caso HTML.

<?php header("Content-type: text/html; charset=utf-8"); ?>

Informar o charset por meio de metatag no cabeçalho da página HTML.

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

Informar o charset na declaração do(s) formulário(s).

<form accept-charset="utf-8" ...>

Recomendações para configurar o banco de dados

Verificar se as tabelas e campos de caracteres estão configurados para utilizar coleção utf8_general_ci, além de informar o charset ao abrir conexão com banco de dados.

Informar o charset através da função mysql_set_charset.

<?php mysql_set_charset('utf8'); ?>

Informar o charset na abertura da conexão.

<?php
$handler = new PDO(
  "mysql:host=localhost;dbname=dbname",
  'username',
  'password',
  array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
);
?>

Informar o charset através da opção driver_options, no global.php.

<?php
return array(
  'db' => array(
    'driver' => 'Pdo',
    'dsn' => 'mysql:dbname=dbname;host=localhost',
    'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'),
  )
);
?>

Conclusão

Espero que vocês economizem um pouco do tempo que passei ao pesquisar esse tema, apesar do artigo ter foco em uma aplicação PHP, os passos são semelhantes em outros cenários.

Referência(s)