Em Monday 18 February 2008 14:48:45 Eduardo Oliveira silva escreveu:
> Boa tarde pessoal,
>
> Estou com proplemas aqui no writer, quando eu salvo o documento, onde
> tem acentos aparece ? e outros caracteres estranhos, alguém pode me
> ajudar.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



Não sei se ajuda, mas envio um texto com link sobre codificação de 
caracteres, que normalmente esta relacionados com estes erros.
 

 
CODIFICAÇÃO DE CARACTERES 
UTF-8 OU ISO 8859-1 (iso-latin1)
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1398 


Artigos

Home > Artigos > Linux > Configuração > Visualização de artigo
Codificação de caracteres de arquivos ASCII
dvissotto
18/08/2004      

Muitas vezes encontramos incompatibilidade entre o sistema de codificação de 
caracteres de um sistema para outro e até mesmo dentro do próprio sistema, 
isso porque existem dois tipos padrões de codificação de caracter para o 
Brasil. UTF-8 e ISO-8859-1 (ou iso-latin1). Este artigo se propõe a 
diminuir as mazelas causadas por um ou por outro.
Por: Dornelles Vissotto Junior  [ Hits: 18448 ]
Conceito: 9.5           + quero dar nota ao artigo
+ Favoritos     Papel A4 Versão para impressora         Indicar para um amigo   
Enviar 
artigo


DICA

Em caso de dúvidas sobre o funcionamento de alguma das seções do site, 
consulte nossa FAQ. Se a dúvida permanecer, tente esclarecê-la na 
comunidade Sugestões para o Viva o Linux.

Codificação de caracteres de arquivos ASCII

Codificação de caracteres de arquivos ASCII
Nos primórdios computacionais foi criada uma tabela de caracteres básica que 
continha 128 caracteres e portanto era possível de ser armazenada em um 
binário de 7 bits chamado ASCII.

Com a disseminação dos computadores pelo mundo veio a necessidade de 
incorporar a esta tabela caracteres diferentes (variantes em cada país) 
composto não apenas por letras, números e sinais, mas por caracteres 
especiais. Vários países que usam letras acentuadas e assim a tabela foi 
expandida para binário de 8 bits (256 caracteres).

No entanto, se considerarmos os alfabetos das línguas européias, os 
alfabetos cirílico (Rússia) e grego, que são totalmente diferentes do 
alfabeto que nós usamos, 256 caracteres é também insuficiente para 
descrevê-los.

Para cada necessidade específica foram criadas tabelas de 8 bits e 
normalizadas pela ISO (International Standardation Organization). Todos 
eles são compatíveis com o ASCII nos primeiros 128 caracteres, 
diferenciando-se entre si nos últimos 128 caracteres. Para alguns países da 
Ásia, onde se usam ideogramas, o binário é de 16 bits.

Vale ressaltar que dentro de um mesmo país pode haver mais de uma tabela 
sendo usado. Por exemplo, aqui no Brasil usa-se muito o ISO-8859-1 no 
Linux, e o IBM 850 no DOS, que são incompatíveis.

Muitas vezes encontramos incompatibilidade entre o sistema de codificação de 
caracteres (character encoding) de um sistema para outro e até mesmo dentro 
do próprio sistema. Isto porque existem dois tipos padrões de codificação 
de caracter para o Brasil, em se tratando de Linux. UTF-8 e iso-8859-1 
(iso-latin1). Ambas as codificações se baseiam na descrição de caracteres 
para línguas provenientes do Latin. O problema é: você só consegue usar um 
charset por vez.

O primeiro é mais novo e se propõe a acabar com a incompatibilidade entre os 
vários tipos de codificação de caracteres iso-latin0-16, por isto a 
denominação Unicode ou também latin-extended, principalmente relacionadas 
aos códigos HTML. O segundo é mais tradicional e vem sendo utilizado 
amplamente e com sucesso nas mais variadas aplicações.

O UTF-8 veio de um novo código de 16 bits (65536 caracteres - UTF-16), 
chamado de Unicode, englobando todas as codificações de caracteres em uma 
única tabela. Isto é, você poderá ler caracteres europeus ou asiáticos sem 
ter que mudar a codificação, e isto ao mesmo tempo!

O problema é que estes arquivos ficariam enormes, pois usariam 2 bytes por 
caracter ao invés de 1 byte. O UTF-8 nada mais é do que uma forma 
alternativa: usa caracteres de bits variáveis. Um caractere alfabético 
usaria apenas 7 ou 8 bits, e caracteres asiáticos usariam 16 bits.

Uma das maiores complicações na compatibilidade entre os dois sistemas 
(UTF-8 e iso) está na representação do Cedilha. Enquanto no iso-latin1 o 
cedilha adota apenas uma codificação para qualquer mapa de teclado ou 
região, para o UTF-8 o cedilha pode ser representado vezes por cedilha 
vezes por c com acento. Isto irá depender muito de suas configurações de 
Localização (locale) como linguagem, tipo de teclado, mapa de teclado.

Estas incompatibilidades ainda acontecem, mesmo com uma correta informação 
sobre o locale. Quase todas as distribuições têm por padrão estarem 
adotando a codificação UTF-8. Como é difícil adaptar todos os padrões dos 
softwares instalados para UTF-8, e até mesmo por incompatibilidade com 
softwares de edição de documentos (latex principalmente), preferi adotar a 
tática de mudar a codificação do SO. Isto me rendeu algumas horas de 
problemas.

Primeiro, as próprias configurações do locale devem ser feitas de tal modo 
que viabilizem a execução do padrão de caracteres desejado. Por exemplo:

LANG=pt_BR
LANG=pt_BR.ISO-8859-1
LANG=pt_BR.UTF-8

Se a base do SO está instalada com UTF-8, quando setamos apenas pt_BR ele 
automaticamente faz o link para pt_BR.UTF-8. Este foi um dos problemas que 
demorei a perceber e que rendeu uma dica neste site "cedilha com o Mandrake 
10.0".

Segundo, as definições de programas baseados em gerenciador gráficos podem 
adotar por padrão a codificação UTF-8. Quase desisti do Mozilla por conta 
deste problema. Mas depois de inúmeras pesquisas descobri que setar a 
configuração padrão do GTK resolveria o problema. Este foi outro 
probleminha que me rendeu mais uma dica neste site "cedilha no Mozilla".

Um outro problema veio a cargo de trabalhar em grupo. Cada pessoa, cada 
estilo, cada codificação. É a mesma coisa que escrever um mesmo programa um 
pouco cada programador. Você olha um código anterior e fica meio sem saber 
o que está acontecendo. Setando a codificação padrão para iso-latin1, quase 
todos os arquivos UTF-8 conseguem a representação correta, ou seja, são 
traduzidos.

O problema surge quando você precisa destes arquivos para processar as 
informações contidas nele, como é o caso do editor latex. Simplesmente 
coisas que funcionavam deixam de funcionar e aparentemente está tudo 
correto.

Para solucionar estes problemas, é necessário a conversão da codificação dos 
arquivos para iso-latin1. Esta conversão, depois de alguma procura, é mais 
simples do que parece e pode ser feita de duas formas. Abrir o arquivo num 
editor padrão e salvá-lo com outro nome (ele faz a conversão da codificação 
automaticamente) ou usar o recode, que é um programa que recodifica 
arquivos ASCII.

$ recode utf-8..iso-latin1 arquivo
$ recode iso-latin1..utf-8 arquivo

Também é possível usar o programa iconv, que é um programinha interpretador 
de códigos:

$ iconv -f UTF-8 -t ISO-8859-1 arquivo-utf > arquivo-iso
$ iconv -f ISO-8859-1 -t UTF-8 arquivo-iso > arquivo-utf

Bom, espero que após esta extensa conversa sobre codificação de caracteres 
as coisas fiquem mais claras para vocês com este artigo.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a