Documentação

Site exibindo caracteres especiais distorcidos

Se "Avaliação" estiver aparecendo como Avalia��o, sua página em ISO-8859-1 está obtendo a palavra armazenada em UTF-8 da origem, seja ela do banco de dados ou de um XML, txt, etc.

Se "Avaliação" estiver aparecendo como Avalia§Ã£o é a sua página em UTF-8 exibindo a palavra armazenada em ISO-8859-1 da origem.

Para que ocorra a exibição correta, deve-se armazenar novamente os dados com a codificação correta (o que é muito trabalhoso dependendo da quantidade de dados) ou trocar a codificação de exibição de seu site. Para trocar a exibição, o cabeçalho HTML deverá estar como:
Para ISO-8859-1: <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Para UTF-8: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Observação sobre a forma de salvar o arquivo: Mesmo que você especifique um dos cabeçalhos acima ou com o charset que deseja, o arquivo deve ser salvo na codificação equivalente ao charset especificado. Por exemplo, se você utiliza <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> , o arquivo deve ser salvo na codificação "ISO-8859-1, ou Latin1, ou Europeu Ocidental ISO (ou mesmo ANSI caso você use o Bloco de Notas do Windows)", mas se o charset for UTF-8, a codificação deverá ser Unicode / UTF-8 também. Lembrando que essa opção está disponível no editor de texto utilizado para editar o arquivo (notepad, notepad ++, gedit, textmate, textpad, vi, vim e vários outros).

Observação sobre o banco de dados: Não é sempre os collations ou encoding das bases o culpado. No caso do MySQL e do PostgreSQL, não haverá nenhum problema de exibição do caractere, mas na hora da busca ele pode não saber o que é o caractere acentuado. O SQL Server já é mais passível de exibir erros conforme o collation especificado.

Outra forma de corrigir a acentuação

Em seu arquivo .htaccess, adicione uma das linhas abaixo de acordo com sua necessidade
php_value default_charset Off
php_value default_charset UTF-8
php_value default_charset ISO-8859-1


Qual a diferença entre os encodings?

A diferença do ISO-8859-1 e do UTF-8 é que um suporta até 256 caracteres (0 a 255, ou 0x00 a 0xFF) e o outro suporta até 65.536 caracteres (0 a 65535, ou 0x0000 a 0xFFFF).

Alguns desenvolvedores utilizam o ISO-8859-1 como forma de economia de espaço, tráfego de rede e mais velocidade na exibição no caso de grandes quantidades de dados, pois um caractere UTF-8 chega a ter o dobro do tamanho de um caractere ISO-8859-1, em compensação, o UTF-8 suporta a maioria das letras, números e outros caracteres dos diversos países do mundo (se não forem todos), o que acaba fazendo do UTF-8 um padrão internacional.


Este artigo lhe foi útil?