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

Maio 2017

Uma pergunta que aparece regularmente no fórum é Como fazer para que os acentos sejam exibidos corretamente em minhas páginas? . Uma das soluções é usar o UTF-8


Como verificar os arquivos de codificação

Os arquivos (.php e .html) do seu site deve ser codificados em UTF-8 (de preferência, sem BOM). Para isso, você pode usar seu editor de texto favorito (ou 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... > Selecionar UTF-8 na lista de codificação.
PHPDesigner: vá em Arquivo > Codificação do arquivo > Selecionar UTF-8 na lista.
PHPEdit: na barra de tarefas, selecionar 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")

$link representando 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 um modo geral, em um BDD MySQL (banco de dados) usamos a codificação bold>utf8-general-ci</bold> 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ê poderia ter colocado em seus scripts.

Saiba mais

Como se conectar a um banco de dados com DOP/mysqli
Como gerenciar os erros no PDO
PHP - Notice: Undefined index:

Veja também

Artigo original publicado por . Tradução feita por pintuda. Última modificação: 14 de novembro de 2016 às 21:14 por ninha25.
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.