Mudanças entre as edições de "Charset"

De WikiLICC
Ir para: navegação, pesquisa
(O servidor Apache)
m (Fedora)
 
(31 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
==Tabela de caracteres iso-8859-1 e utf-8==
+
O charset '''iso-8859-1''' é o charset para códigos de caracteres latinos. Assim letras acentuadas serão representadas
===iso-8859-1===
 
Este é 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   
  
===utf-8===
+
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).
Esta 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 -   Unicode                      - Hexadecimal
+
  Ação    |   U+0041 U+00E7 U+00E3 U+006F  | 41,C3 A7,C3 A3,6F
  Ação    -   U+0041 U+00E7 U+00E3 U+006F  - 41,C3 A7,C3 A3,6F
 
  
 
* [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==
+
=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===
+
==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=
 
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====
+
==vi==
O vi (vim) possui o arquivo de configuração .vimrc no direrório home do usuário a com configuração
+
No arquivo de configuração do vi (diretório home), temos
  set fileencodings=utf-8,latin1
+
[user@euler] more ~/.vimrc
com que arquivos sejam 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]).
+
...
 +
set fileencodings=utf-8,latin1
 +
...
 +
Assim os arquivos podem ser editados nesses formatos.
  
==O arquivo html==
+
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 servidor Apache==
+
=O arquivo php=
Ao enviar uma página para o cliente web, o servidor apache avisa qual tipo de charset é utilizado.
+
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');
 +
?>
  
==Firefox==
+
==Setar o locale na Euler==
Clicando em Tools/Page Info/General podemos ver o Encoding e as tags meta.  
+
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 Firefox verifica qual encoding foi informado pelo servidor web (apache). Veja o arquivo http.conf, e procure a linha
+
=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
Isso significa que 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.
+
=O cliente Firefox/Internet Explorer=
(Isso acontece também com o 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

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

Ligações Externas