Charset
O charset iso-8859-1 é o charset para códigos de caracteres latinos. Assim letras acentuadas serão representadas por apenas um caractere.
palavra - Hexadecimal Ação - 41-E7-E3-6F
O charset utf-8 é uma tabela de caracteres [multibyte], ou seja, alguns caracteres serão representados no arquivo como 2 ou mais caracteres ASCII (o que pode dificultar a utilização de funções Lenght).
palavra | Unicode | Hexadecimal Ação | U+0041 U+00E7 U+00E3 U+006F | 41,C3 A7,C3 A3,6F
Índice
Digitando os caracteres
Cada uma das partes abaixo pode estar configurada de maneira diferente.
O sistema operacional
Para verificar qual charset o sistema linux está usando:
[user@euler]$ locale LANG=pt_BR.UTF-8 LC_CTYPE="pt_BR.UTF-8" ...
Gentoo
Todos os locales disponíveis estão em
[hunter]$ ls /usr/share/i18n/locales/ .. pt_BR pt_PT en_US en_GB ...
e os locales com suporte no sistema estão em
[hunter]$ vi /usr/share/i18n/SUPPORTED .. pt_BR.UTF-8 UTF-8 pt_BR ISO-8859-1 pt_PT.UTF-8 UTF-8 pt_PT ISO-8859-1 ..
- No arquivo /etc/locale.gen estão os locales a serem instalados no sistema
[hunter]$ vi /etc/locale.gen .. pt_BR ISO-8859-1 pt_BR UTF-8 pt_BR.UTF-8 UTF-8 ..
- Force a instalação dos locales
[hunter]$ locale-gen
- Verifique os locales instalados
[hunter]$ locale -a C POSIX pt_BR pt_BR.iso88591 pt_BR.utf8
A variável LANG e LC_ALL (quem sabe as outras) devem conter uns dos itens acima
[hunter]$ locale LANG=pt_BR LC_ALL=pt_BR LC_CTYPE="pt_BR" ...
OpenBSD
Não achei o comando locale. Assim temos que seguir o que está setado (até eu descobrir como mudar)
Usando o comando set temos a única variável definida
[euler]$ set | egrep 'LANG|LC_' LC_CTYPE=pt_PT.ISO8859-1
O truque é usar esse locale no início do script PHP para o comando strtolower funcionar.
O cliente SSH
Usando o Putty, clicando em Settings/Windows/Translations podemos selecionar a tabela charset.
O editor
O editor de texto usado deve ser capaz de salvar usando a tabela de caracteres desejada.
vi
No arquivo de configuração do vi (diretório home), temos
[user@euler] more ~/.vimrc ... set fileencodings=utf-8,latin1 ...
Assim os arquivos podem ser editados nesses formatos.
Se um arquivo iso-8859-1 é editado com um cliente SSH (em UTF-8), o arquivo é convertido ao abrir para UTF-8 e convertido de volta ao salvar para iso-8859-1 (veja [1]).
Use :language para ver a linguagem usada pelo vi
:language Current language: "pt_BR.UTF-8"
O arquivo html
Para utf-8 use o cabeçalho
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
e para iso-8859-1 use
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
O servidor Apache
Ao enviar uma página para o cliente web, o servidor apache avisa qual tipo de charset é utilizado.
[user@euler]$ more http.conf ... AddDefaultCharset ISO-8859-1 ...
O cliente Firefox/Internet Explorer
O Firefox verifica qual encoding foi informado pelo servidor web (no exemplo ISO-8859-1). Todas as páginas saindo desse servidor serão padrão ISO-8859-1, mesmo que especificado de forma contrária no cabeçalho html.
Clicando em Tools/Page Info/General podemos ver o Encoding e as tags meta.
Veja Também
- utf8: Convertendo arquivos entre utf-8 e iso-8859-1
- Convertendo arquivos entre utf-8 e iso-8859-1
Ligações Externas
- http://www.phpwact.org/php/i18n/charsets, Boa explicação com bastante informação dos diferentes aspectos
- W3Cbr: Configurando o parâmetro HTTP da codificação de caracteres (charset)
- http://www.w3.org/International/O-charset.pt-br.php
- Configurações para o VI