Caracteres acentuados e o UTF-8 (Html/Php)

Uma pergunta que aparece regularmente no fórum do CCM Brasil é Como fazer para que os acentos sejam exibidos corretamente em minhas páginas? Nesse artigo, mostramos a solução para esse problema com a ajuda do UTF-8 para que os sinais de pontuação parem de ser uma dor de cabeça para você.

Como verificar os arquivos de codificação

Os arquivos PHP e HTML do seu site devem ser codificados em UTF-8, de preferência sem BOM. Para isso, você pode usar seu editor de texto favorito (ou o seu IDE).

Exemplo

  • Notepad++: vá em Formato > Codificar em UTF-8 (sem BOM);
  • Dreamweaver: vá em Alterar > Propriedades da página > Título/Codificação;
  • Aptana: vá em Edit (Editar) > Set Encoding (Configuração de codificação);
  • Bloco de notas do Windows: vá em Arquivo > Salvar como... e selecione UTF-8 na lista de codificação;
  • PHPDesigner: vá em Arquivo > Codificação do arquivo e escolha UTF-8 na lista;
  • PHPEdit: na barra de tarefas, selecione UTF-8 sem a marca de ordem dos bytes na lista;
  • UltraEdit: vá em Arquivo > Conversões > ASCII para UTF-8.

Como definir a conexão com o BDD

Em PDO (PHP Data Objects), por exemplo, você pode especificar a codificação durante a conexão adicionando o charset (codificação de caracteres):

try{
  $bdd =new PDO('mysql:host=localhost; 
 dbname=mabdd; charset=utf8', 'user', 'password');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
    die('Erro: ' . $e->getMessage());
}

Em Mysqli, vamos utilizar a instrução:

//Estilo orientado ao objeto
$link->set_charset("utf8")

//Estilo processual
mysqli_set_charset($link, "utf8")

Onde $link representa a conexão.

Como declarar a codificação em sua página

Essa declaração é feita no cabeçalho das suas páginas. Em HTML, na marca HEAD você pode usar, por exemplo:

meta http-equiv="Content-Type" content=\"text/html; charset=UTF-8\" 

ou (em HTML5)

meta charset="UTF-8"

Em PHP você pode usar a instrução:

header( 'content-type: text/html; charset=utf-8' );

Como verificar se os seus BDD estão em UTF-8

De modo geral, em um BDD MySQL (banco de dados) usamos a codificação utf8-general-ci ou utf8_unicode_ci.

Observação: se você já fez inserções no BDD, verifique se os caracteres acentuados aparecem corretamente em suas tabelas.

Utf8_encode/Utf8_decode

Não se esqueça de remover todas as instruções Utf8_encode / Utf8_decode que você pode ter colocado em seus scripts.

Foto: © Unsplash

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.
Veja também
Este documento, intitulado 'Caracteres acentuados e o UTF-8 (Html/Php)', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade