Mudanças entre as edições de "Charset"
(→O servidor Apache) |
m (→Fedora) |
||
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
− | + | O charset '''iso-8859-1''' é o charset para códigos de caracteres latinos. Assim letras acentuadas serão representadas | |
− | |||
− | |||
por apenas um caractere. | por apenas um caractere. | ||
palavra - Hexadecimal | palavra - Hexadecimal | ||
Ação - 41-E7-E3-6F | 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 | |
− | palavra | + | Ação | U+0041 U+00E7 U+00E3 U+006F | 41,C3 A7,C3 A3,6F |
− | Ação | ||
* [http://en.wikipedia.org/wiki/ISO_8859-1 ISO_8859-1] | * [http://en.wikipedia.org/wiki/ISO_8859-1 ISO_8859-1] | ||
Linha 15: | Linha 12: | ||
* [http://www.utf8-chartable.de/ Tabela completa UTF-8] | * [http://www.utf8-chartable.de/ Tabela completa UTF-8] | ||
− | + | =Digitando os caracteres= | |
Cada uma das partes abaixo pode estar configurada de maneira diferente. | Cada uma das partes abaixo pode estar configurada de maneira diferente. | ||
− | + | ==O sistema operacional== | |
Para verificar qual charset o sistema linux está usando: | Para verificar qual charset o sistema linux está usando: | ||
[user@euler]$ locale | [user@euler]$ locale | ||
Linha 23: | Linha 20: | ||
LC_CTYPE="pt_BR.UTF-8" | LC_CTYPE="pt_BR.UTF-8" | ||
... | ... | ||
− | ===O cliente SSH | + | |
+ | ===Gentoo=== | ||
+ | * http://www.gentoo-wiki.info/Locales | ||
+ | |||
+ | Todos os locales disponíveis estão em | ||
+ | [hunter]$ ls /usr/share/i18n/locales/ | ||
+ | .. | ||
+ | <font color=red>pt_BR</font> | ||
+ | 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 | ||
+ | <font color=red>pt_BR</font> | ||
+ | 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 | ||
+ | .. | ||
+ | <font color=red>pt_BR</font> 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 | ||
+ | <font color=red>pt_BR</font> | ||
+ | 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=<font color=red>pt_BR</font> | ||
+ | LC_ALL=pt_BR | ||
+ | LC_CTYPE="<font color=red>pt_BR</font>" | ||
+ | ... | ||
+ | |||
+ | ===Fedora=== | ||
+ | Para verificar os locales utilizados: | ||
+ | [fedora]$ locale | ||
+ | LANG=en_US.utf8 | ||
+ | LC_CTYPE="en_US.utf8" | ||
+ | ... | ||
+ | |||
+ | Todos os locales disponíveis estão em | ||
+ | [fedora]$ ls /usr/share/i18n/locales/ | ||
+ | .. | ||
+ | <font color=red>pt_BR</font> | ||
+ | en_US | ||
+ | ... | ||
+ | |||
+ | * No arquivo /etc/locale.conf estão os locales a serem instalados no sistema | ||
+ | [fedora]$ more /etc/locale.conf | ||
+ | LANG="en_US.UTF-8" | ||
+ | |||
+ | * Force a instalação dos locales | ||
+ | [hunter]$ locale-gen | ||
+ | * Verifique os locales instalados | ||
+ | [hunter]$ locale -a | ||
+ | C | ||
+ | POSIX | ||
+ | <font color=red>pt_BR</font> | ||
+ | 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=<font color=red>pt_BR</font> | ||
+ | LC_ALL=pt_BR | ||
+ | LC_CTYPE="<font color=red>pt_BR</font>" | ||
+ | ... | ||
+ | |||
+ | ===OpenBSD=== | ||
+ | Não achei o comando locale. Assim temos que seguir o que está setado (até eu descobrir como mudar). | ||
+ | |||
+ | Acho que os locales disponíveis estão em | ||
+ | [euler]$ ls /usr/share/i18n/locale/ | ||
+ | .. | ||
+ | <font color=red>pt_PT.ISO8859-1</font>/ | ||
+ | pt_PT.ISO8859-15/ | ||
+ | en_US.UTF-8/ | ||
+ | en_US.ISO8859-1/ | ||
+ | en_GB.ISO8859-1/ | ||
+ | ... | ||
+ | |||
+ | * No arquivo /etc/profile temos a linha | ||
+ | [euler]$ egrep 'LANG|LC_' /etc/profile | ||
+ | LC_CTYPE=<font color=red>pt_PT.ISO8859-1</font> | ||
+ | |||
+ | Usando o comando '''set''' temos a única variável definida | ||
+ | [euler]$ set | egrep 'LANG|LC_' | ||
+ | LC_CTYPE=<font color=red>pt_PT.ISO8859-1</font> | ||
+ | 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. | 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. | 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 [http://vimdoc.sourceforge.net/htmldoc/mbyte.html]). | |
+ | |||
+ | 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 | Para utf-8 use o cabeçalho | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
Linha 38: | Linha 145: | ||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> | ||
− | + | =O arquivo php= | |
− | + | Para algumas funções funcionarem como '''strtolower''', '''strtoupper''' deve ser colocado no início do script. | |
+ | <?php | ||
+ | setlocale(LC_CTYPE ,'pt_PT.ISO8859-1'); | ||
+ | echo strtolower('AÇÃO'); | ||
+ | ?> | ||
+ | ou na hunter | ||
+ | <?php | ||
+ | setlocale(LC_CTYPE ,'pt_BR'); | ||
+ | echo strtolower('AÇÃO'); | ||
+ | ?> | ||
− | == | + | ==Setar o locale na Euler== |
− | + | Editar no arquivo ''php.ini'' o valor da diretiva ''auto_prepend_file'' | |
+ | [user@euler]$ vi /usr/local/php5/lib/php.ini | ||
+ | .. | ||
+ | auto_prepend_file = /CAMINHO/SetLocale.php | ||
+ | .. | ||
+ | O arquivo ''SetLocale.php'' deve conter algo como | ||
+ | [user@euler]$ vi SetLocale.php | ||
+ | <?php | ||
+ | $MyEulerLocale=setlocale(LC_CTYPE, 'pt_PT.ISO8859-1'); | ||
+ | if($MyEulerLocale !== 'pt_PT.ISO8859-1'){echo "Warning: Nao consegui escolher locale. (SetLocale.php)\n";}; | ||
+ | unset($MyEulerLocale); | ||
+ | ?> | ||
− | O | + | =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 | 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== | ==Veja Também== | ||
− | *[[utf8]]: Convertendo arquivos entre utf-8 e iso-8859-1 | + | * [[utf8]]: Convertendo arquivos entre utf-8 e iso-8859-1 |
* [http://jfmitre.com/2006/05/convertendo-arquivos-utf-8-em-iso-8859.html Convertendo arquivos entre utf-8 e iso-8859-1] | * [http://jfmitre.com/2006/05/convertendo-arquivos-utf-8-em-iso-8859.html Convertendo arquivos entre utf-8 e iso-8859-1] | ||
+ | * [[Idioma]]: Configuração do vi | ||
==Ligações Externas== | ==Ligações Externas== | ||
Linha 59: | Linha 192: | ||
* [http://www.w3.org/International/O-HTTP-charset W3Cbr: Configurando o parâmetro HTTP da codificação de caracteres (charset)] | * [http://www.w3.org/International/O-HTTP-charset W3Cbr: Configurando o parâmetro HTTP da codificação de caracteres (charset)] | ||
* http://www.w3.org/International/O-charset.pt-br.php | * http://www.w3.org/International/O-charset.pt-br.php | ||
+ | * [http://vimdoc.sourceforge.net/htmldoc/mbyte.html Configurações para o VI] |
Edição atual tal como às 10h47min de 20 de junho de 2013
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 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" ...
Fedora
Para verificar os locales utilizados:
[fedora]$ locale LANG=en_US.utf8 LC_CTYPE="en_US.utf8" ...
Todos os locales disponíveis estão em
[fedora]$ ls /usr/share/i18n/locales/ .. pt_BR en_US ...
- No arquivo /etc/locale.conf estão os locales a serem instalados no sistema
[fedora]$ more /etc/locale.conf LANG="en_US.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).
Acho que os locales disponíveis estão em
[euler]$ ls /usr/share/i18n/locale/ .. pt_PT.ISO8859-1/ pt_PT.ISO8859-15/ en_US.UTF-8/ en_US.ISO8859-1/ en_GB.ISO8859-1/ ...
- No arquivo /etc/profile temos a linha
[euler]$ egrep 'LANG|LC_' /etc/profile LC_CTYPE=pt_PT.ISO8859-1
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 arquivo php
Para algumas funções funcionarem como strtolower, strtoupper deve ser colocado no início do script.
<?php setlocale(LC_CTYPE ,'pt_PT.ISO8859-1'); echo strtolower('AÇÃO'); ?>
ou na hunter
<?php setlocale(LC_CTYPE ,'pt_BR'); echo strtolower('AÇÃO'); ?>
Setar o locale na Euler
Editar no arquivo php.ini o valor da diretiva auto_prepend_file
[user@euler]$ vi /usr/local/php5/lib/php.ini .. auto_prepend_file = /CAMINHO/SetLocale.php ..
O arquivo SetLocale.php deve conter algo como
[user@euler]$ vi SetLocale.php <?php $MyEulerLocale=setlocale(LC_CTYPE, 'pt_PT.ISO8859-1'); if($MyEulerLocale !== 'pt_PT.ISO8859-1'){echo "Warning: Nao consegui escolher locale. (SetLocale.php)\n";}; unset($MyEulerLocale); ?>
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
- Idioma: Configuração do vi
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