Anda di halaman 1dari 7

Cuidados com a codicao

Salviano A. Leo 06-12-2013

Introduo

Nos sistemas Linux, as terminaes de um arquivo servem basicamente para o usurio, pois o sistema, Em sistemas Linux, encontramos diversos tipos de arquivos, geralmente identicados por suas terminaes: Esta a conveno, que nem sempre usada. Pode-se perfeitamente criar um arquivo texto que no tenha a terminao .txt. O comando le nos permite identicar a que categoria um arquivo pertence. Vejamos alguns exemplos: Cuidados com acentuao Primeiro passo: vericar a codicao do arquivo: No exemplo a seguir temos uma codicao utf
$ file -i arquivo1 . tex arquivo1 . tex : text /x - tex ; charset = utf -8

No exemplo a seguir temos uma codicao iso-8859-1 ou seja, latin1


$ file -i arquivo2 . tex arquivo2 . tex : text /x - tex ; charset = iso -8859 -1

No exemplo a seguir temos uma codicao us-ascii ou seja, uma padro sem nenhum carcter especial.
$ file -i arquivo2 . tex arquivo2 . tex : text /x - tex ; charset = us - ascii

O comando le baseia suas decises consultando o arquivo /usr/share/magic, onde esto registradas as caractersticas dos principais tipos de arquivos do sistema. Para maiores informaes consultar a documentao do arquivo magic.

Convertendo de uma uma codicao para outra


Para fazer a converso da codicao utf8 para iso-8859-1 do arquivo arquivo1.tex faa:
$ iconf -f utf8 -t iso -8859 -1 arquivo1 . tex > arquivo1_iso . tex

obtendo como resultado o arquivo arquivo1_iso.tex codicado com iso-8859-1. 1

Para fazer a converso da codicao iso-8859-1 para utf8 do arquivo arquivo2.tex faa:
$ iconf -f iso -8859 -1 -t utf8 arquivo2 . tex > arquivo2_utf . tex

obtendo como resultado o arquivo arquivo2_utf.tex codicado com utf8. Para listar todas codicaes conhecidas digite: iconv -l Para maiores detalhes veja man iconv. H tambm o comando recode, porm ele salva por cima e converte todas as barras de comando.

Codicao de caracteres
UTF-8: No LINUX pode-se escolher a codicao desejada (na instalao ou posteriormente) mas em verses mais atuais geralmente utiliza-se como padro na instalao. ISO-8859-1: O WINDOWS usa um formato prprio WINDOWS-1252 mas que quase igual a ISO-8859-1 (tambm chamado de latin1).

Em portugus brasileiro os sistemas operacionais utilizam diferentes codicaes de caracteres:

Estas diferentes codicaes podem ter efeitos sobre documentos com caracteres especiais A escritos em um sistema e visualizados e ou compilados(por exemplo documentos L TEX) em outro sistema. No LINUX, para saber qual a codicao de caracteres est sendo usada no sistema digite na linha de comando do terminal:
$ locale

Se na sada desse comando tiver a sequncia de caracteres: 1. pt.BR porque o sistema ISO-8859-1; 2. pt.BR.UTF-8 porque o sistema UTF-8 Alguns programas e aplicativos, em especial editores de texto (por exemplo o kile) possuem opes para se escolher a codicao de caracteres a ser utilizada.

Converso de arquivos via comando em terminal (LINUX)

Para converter um arquivo de um formato para outro na linha de comando do Linux pode-se usar os comandos iconv ou recode na linha de comando do terminal.

4.1

Usando o comando convmv

O comando convmv muito exvel tanto para converter arquivos individuais quanto diretrios, subdiretrios e arquivos, recursivamente, de uma s vez. Veja se o comando est disponvel no seu sistema. Se no etiver instale com
sudo apt - get install convmv

para testar a converso de um arquivo, por exemplo, exemplo.tex pode-se usar


convmv -f UTF -8 -t ISO -8859 -1 exemplo . tex

e para converter denitivamente um arquivo, por exemplo, exemplo.tex pode-se usar


convmv -f UTF -8 -t ISO -8859 -1 -- notest exemplo . tex

Para converter denitivamente um diretrio recursivamente (isto todos os subdiretrios e arquivos) usase a opo -r:
convmv -r -f UTF -8 -t ISO -8859 -1 -- notest DIRETORIO

Mais detalhes na documentao


man convmv

4.2

Usando o comando iconv

Voce tem um arquivo exemplo1.tex digitado em um sistema ISO-8859-1 e quer converter para UTF-8 gerando o arquivo com nome exemplo1a.tex (vamos preservar o original por segurana, se vc quiser depois renomeie o arquivo)
iconv -f ISO -8859 -1 -t UTF -8 -o exemplo1a . tex exemplo1 . tex

Voce tem um arquivo exemplo2.tex digitado em um sistema UTF-8 e quer converter para ISO-8859-1 gerando o arquivo com nome exemplo2a.tex (vamos preservar o original por segurana, se voc quiser depois renomeie o arquivo)
iconv -f UTF -8 -t ISO -8859 -1 -o exemplo2a . tex exemplo2 . tex

4.3

Usando o comando recode

As distribuies mais recentes do linux esto adotando a codicao de caracteres utf-8. Para converter seus arquivos para o novo padro use o comando recode como nos exemplos a seguir: De latin1 (iso-8859-1) para utf-8:
recode -d l1 .. utf8 arquivo . csv

De utf-8 para latin1 (iso-8859-1):


recode -d utf8 .. l1 arquivo . csv

De ISO para UTF:


recode -d l1 .. u8 arquivo . tex

De UTF para ISO:


recode -d u8 .. l1 arquivo . tex

Caso queira converter o arquivo para a acentuao do latex:


recode -d l1 .. tex arquivo . tex

Lembrete: o recode grava em cima do prprio arquivo. Para sua segurana, faa um back-up do arquivo antes de executar o comando, ou:
recode -d l1 .. tex < arquivo . tex

isso faz com que o resultado do recode seja mostrado direto na tela. Para converter um arquivo, use o comando "recode -d ISO-8859-1..UTF-8"seguido pelo arquivo a ser convertido, como em:
$ recode -d ISO -8859 -1.. UTF -8 arquivo . txt

Voc pode tambm converter de uma vez diversos arquivos, como em:
$ recode -d ISO -8859 -1.. UTF -8 *. html

ou:
$ recode -d ISO -8859 -1.. UTF -8 *. php

O recode no salva cpias dos arquivos originais, por isso importante que voc sempre execute o comando sobre uma cpia dos arquivos, substituindo os arquivos originais s depois de vericar e testar. Concluindo, possvel tambm fazer o caminho inverso, convertendo arquivos de UTF-8 para ISO-8859-1, invertendo a sintaxe do comando, como em:
$ recode -d UTF -8.. ISO -8859 -1 *. html

A principal observao nesse caso que o recode s consegue converter caracteres UTF-8 que possuem um correspondente dentro da codicao ISO-8859-1, por isso no deve ser usado em textos que incluam caracteres de lnguas asiticas, por exemplo.

Usando o recurso dos2unix

O dos2unix pode ser usado neste site que perite a converso online

Denio de codicao no R

O R por "default"l e usa a codicao de caracteres ("enconding") do seu sistema. Entretanto para ler e importar arquivos pode ser til e necessrio denir a desejada. O caminho para denir a codicao em uma sesso do R com o comando <R>options(encoding="O QUE VOCE QUER AQUI")</R> e para importar arquivos diversas funes aceitam o argumento enconding. Para mais detalhes veja e sesso "Encodings"em <R>help("connections")</R> 4

A Denio de codicao (locale) no L TEX

A Uso no L TEX: o prembulo de seu documento deve ter:

para ISO-8859-1:
\ usepackage [ latin1 ]{ inputenc }

para UTF-8:
\ usepackage [ utf8 ]{ inputenc }

Denio de codicao (locale) em uma sesso do R e/ou Sweave


possvel fazer a converso usando a funo iconv(). Denir a opo padro para uma sesso com options(): Os comandos do R a seguir podem denir o enconding desejado em uma sesso. Isto particularmente til gerando documentos via Sweave.
options ( encoding = " UTF -8 " ) options ( encoding = " latin1 " )

No R h pelos menos duas formas de lidar com isto:

Note que isto vai gerar o documento em um computador com certa codicao e que pode ser incompatvel para compilao em outra mquina que usar um outro enconding. Neste caso necessrio usar o iconv descrito anteriormente para converter de um formato para outro antes A de compilar o documento L TEX.

Converso de todo o sistema

Na instalao do sistema operacional (LINUX) instalada uma codicao cd caracteres default. Em alguns casos o procedimento de instalao pergunta sobre a codicao desejada (ou permite que seja denida). Porm muitas vezes a codicao padro instalada e o usurio deseja mudar depois da instalao. Em verses recentes do Linux tais como Debian, Ubuntu, Mint entre outras a codicao UTF-8 a padro da instalao. A seguir vamos ilustrar a congurao e converso de sistema UTF-8 para ISO-8859-1 com opes para portugues (BR) e ingls.

9.1

Gerar os locales desejados:

1. editar o arquivo /var/lib/locales/supported.d/local deixando com o seguinte contedo:

pt_BR . UTF -8 UTF -8 en_US . UTF -8 UTF -8 en_GB . UTF -8 UTF -8 pt_BR IS0 -8859 -1 en_US IS0 -8859 -1 en_GB IS0 -8859 -1

2. gerar os locales com o comando:


sudo dpkg - reconfigure locales

9.2

Denio do locale do sistema

Cada um dos locales gerados podem ser escolhidos para o sistema. Para denir o locale desejado edite o Arquivo de congurao para denio dos locales /etc/environment ou /etc/default/locale. Em um exemplo optando por portugus brasileiro com codicao ISO-8859-1 o contedo de um destes arquivos deve ter as seguintes linhas:
LANG = " pt_BR " LANGUAGE = " pt_BR : pt "

Depois disto, para converter nomes e contedos de arquivos e diretrios j existentes use o comando convmv descrito acima.

Referncias
[1] http://www.leg.ufpr.br/doku.php/dicas:caracteres [2] http://www.dicas-l.com.br/arquivo/gnu_linux_tipos_de_arquivos.php# .UqMvj0Mdx38 [3] http://latexbr.blogspot.com.br/2011/01/recodificando-seus-arquivos-iso-para. html [4] http://sergioaraujo.pbworks.com/w/page/15863917/iconv [5] http://cosaslibres.com.co/ayuda-en-linux/man-comandos-linux/ comando-file-linux/ [6] http://pt.wikipedia.org/wiki/File_%28Unix%29 [7] http://pt.wikipedia.org/wiki/N%C3%BAmero_m%C3%A1gico_%28inform%C3%A1tica% 29 [8] Neste sto temos alguns comandos comandos-manipulacao-de-arquivos/ [9] Neste sto temos alguns comandos linux: Principais-comandos-do-Linux [10] Neste sto temos alguns comandos linux: Utilit%C3%A1rios_de_Linux/Unix 6 linux: http://www.devin.com.br/

http://www.vivaolinux.com.br/dica/ http://pt.wikipedia.org/wiki/Anexo:

[11] Neste sto temos alguns comandos linux: http://www.pixelbeat.org/cmdline.html [12] Neste sto temos alguns comandos linux: http://pt.wikibooks.org/wiki/Guia_do_ Linux/Iniciante+Intermedi%C3%A1rio/Comandos_diversos [13] Neste sto temos alguns comandos linux: http://www.gnu.org/software/coreutils/ manual/coreutils.html [14] Neste sto temos alguns comandos linux: http://caradoacre.wordpress.com/2009/10/ 17/pequenos-comandos-que-podem-salvar-o-seu-dia/ [15] Neste sto temos alguns comandos linux: 704130/can-i-transpose-a-file-in-vim [16] Neste sto temos alguns comandos linux: 1729824/transpose-a-file-in-bash http://stackoverflow.com/questions/ http://stackoverflow.com/questions/

Anda mungkin juga menyukai