Back-End

15 abr, 2015

Configurando charset de uma aplicação PHP

Publicidade

Imagine que você está desenvolvendo uma aplicação para Internet em seu ambiente local, e 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 nesse cenário é analisar se o charset está devidamente configurado na aplicação e no 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 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, o charset declarado e o charset utilizado para salvar o documento no seu editor – como 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, e 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

Script PHP

Informar o charset na declaração dos formulários, caso exista.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"); ?>

Metatag HTML

Informar o charset através da metatag no cabeçalho do código html.

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

Formulário

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

Recomendações para configurar o banco de dados

Verificar se as tabelas e os 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.

Conexão MySQL

mysql_set_charset('utf8');
Conexão PDO
$handle = new PDO("mysql:host=localhost;dbname=dbname",
    'username', 'password',
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
Conexão ZF2
return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=dbname;host=localhost',
        'driver_options' => array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"),
    ),
);

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

1
mysql_set_charset('utf8');

Conclusão

Espero que vocês economizem um pouco do tempo que passei ao pesquisar esse tema. Apesar de o artigo ter foco em uma aplicação PHP, os passos são semelhantes em outros cenários. Confira também o artigo de Rob Allen, sobre UTF-8, PHP e MySQL, pois contém dicas valiosas.

Antes de implantar sua aplicação, teste separadamente no servidor de produção.

Referência(s)