Problemas com codificação utf-8 no gedit

Iniciado por mateusgf, 27 de Maio de 2011, 16:49

tópico anterior - próximo tópico

mateusgf

Fala glr! Meu primeiro post aqui no fórum... to tentando usar o linux pra ver se substituo de vez pelo ruwindows.

Tô com problema de codificação. Eu faço tudo em UTF-8. Tenho um arquivo .php em UTF-8 que eu fiz no windows e agora to editando no gedit. Só que ele não tá convertendo os acentos pra UTF-8. Quando eu abro ele no browser ele não reconhece os acentos, mas quando eu mudo a codificação do browser pra iso-8859-1 o acento é reconhecido. Como é que eu resolvo isso? Pode me mandar uma solução pro gedit ou pro vim.

Valeu, até mais!

irtigor

O sistema inteiro usa utf8 (a não ser que você tenha mudado). Converta os arquivos problemáticos pra utf8 com recode, iconv ou qualquer outro programa.

mateusgf

recode, iconv? são programas? pego eles onde?

Tota

Citação de: mateusgf online 27 de Maio de 2011, 19:01
recode, iconv? são programas? pego eles onde?

Ola

Tente ver se estão no Gerenciador de Pacotes Synaptic  ;D

[]'s

mateusgf

depois de instalado o recode vai pra onde?

irtigor

Não tem interface gráfica, logo não vai parecer no menu. Leia o manual (man recode) e/ou busque exemplos/dicas/etc na internet. Seja proativo.

fpissarra

#6
Citação de: mateusgf online 27 de Maio de 2011, 16:49
Fala glr! Meu primeiro post aqui no fórum... to tentando usar o linux pra ver se substituo de vez pelo ruwindows.

Tô com problema de codificação. Eu faço tudo em UTF-8. Tenho um arquivo .php em UTF-8 que eu fiz no windows e agora to editando no gedit. Só que ele não tá convertendo os acentos pra UTF-8. Quando eu abro ele no browser ele não reconhece os acentos, mas quando eu mudo a codificação do browser pra iso-8859-1 o acento é reconhecido. Como é que eu resolvo isso? Pode me mandar uma solução pro gedit ou pro vim.

Valeu, até mais!

A não ser que o editor que você usou no Windows tenha suporte direto do UTF-8, você provavelmente editou o arquivo usando a página de código Windows-1252 (ou 1251, sei lá!). No Ubuntu todo o sistema usa UTF-8, daí, caracteres "acentuados" são codificados diferente no Windows-1252 (que é uma extensão do ISO-8859-1).

Como já te falaram, use o iconv:

$ iconv --from-code=ISO8859-1 --to-code=UTF-8 meutexto.txt -o utf8texto.txt

O iconv já vem instaldo...

Para ver todos os charsets suportados pelo iconv use:

$ iconv --list

mateusgf

@irtigor Ser proativo no linux é um tanto difícil. Procurei muito sobre codificação na net antes de fazer esse post aqui e a única coisa que achei foi  sobre como converter de UTF-8 para ISO8859-1. Pesquisar coisas do linux é difícil pq vc não sabe exatamento pelo que procurar.

@fpissarra Eu usava o Notepad++ pra editar os arquivos. Quer dizer que o windows não codificava em UTF-8? Era um pseudo UTF-8? De qualquer forma eu usei iconv --from-code=ISO8859-1 --to-code=UTF-8 teste.php -o teste.php e converteu o arquivo pra utf-8, porém não alterou os sinais de acentuação. Tive que digitar de novo os sinais manualmente. Talvez pq o arquivo não era ISO8859-1.

Eu fico intrigado é que, antes, mesmo eu editando o arquivo "teste.php" no gedit colocando acento e salvando ele não reconhecia. Ficava como se não tivesse salvando em utf-8 mesmo eu salvando como utf-8.

fpissarra

Citação de: mateusgf online 29 de Maio de 2011, 12:22
@irtigor Ser proativo no linux é um tanto difícil. Procurei muito sobre codificação na net antes de fazer esse post aqui e a única coisa que achei foi  sobre como converter de UTF-8 para ISO8859-1. Pesquisar coisas do linux é difícil pq vc não sabe exatamento pelo que procurar.
O que pode ser mais "proativo" do que uma simples linha de comando?

Citar
@fpissarra Eu usava o Notepad++ pra editar os arquivos. Quer dizer que o windows não codificava em UTF-8? Era um pseudo UTF-8? De qualquer forma eu usei iconv --from-code=ISO8859-1 --to-code=UTF-8 teste.php -o teste.php e converteu o arquivo pra utf-8, porém não alterou os sinais de acentuação. Tive que digitar de novo os sinais manualmente. Talvez pq o arquivo não era ISO8859-1.

Qual foi a parte de "você provavelmente editou o arquivo usando a página de código Windows-1252", do meu texto original que você não entendeu?

Citar
Eu fico intrigado é que, antes, mesmo eu editando o arquivo "teste.php" no gedit colocando acento e salvando ele não reconhecia. Ficava como se não tivesse salvando em utf-8 mesmo eu salvando como utf-8.
Use um editor melhor... o VIM, por exemplo...

fpissarra

#9
Uma demonstração de como a conversão funciona: No Windows, que usa o charset WINDOWS-1252, por default, criei o arquivo texto testew1252.txt com uma linha escrita: "Está cheio de acentuação."... Dai, no Linux, vamos dar uma olhada no arquivo:

$ hd testew1252.txt
00000000  45 73 74 e1 20 63 68 65  69 6f 20 64 65 20 61 63  |Est. cheio de ac|
00000010  65 6e 74 75 61 e7 e3 6f  2e 0a                    |entua..o..|


Como pode observar, os bytes da posição 3, 21 e 22 são E1, E7 e E3, correspondedo ao 'á', 'ç' e 'ã', de acordo com a tabela em http://en.wikipedia.org/wiki/Windows-1252.

Depois de converter com o iconv:

$ iconv -f WINDOWS-1252 -t UTF-8 testw1252.txt -o testUTF8.txt
$ hd testUTF8.txt
00000000  45 73 74 c3 a1 20 63 68  65 69 6f 20 64 65 20 61  |Est.. cheio de a|
00000010  63 65 6e 74 75 61 c3 a7  c3 a3 6f 2e 0a           |centua....o..|


Como pode observar o 'á' corresponde ao código C3 A1, o 'ç' corresponde a C3 A7 e o 'ã' ao C3 A3. O arquivo testeUTF8.txt tem agora exatamente 3 bytes adicionais, em relação ao original. E. se você abrir o arquivo com um editor que preste ou usar o comando cat, verá:

$ cat testUTF8.txt
Está cheio de acentuação.


Com todos os acentos convertidos!

sigur

#10
Citação de: fpissarra online 29 de Maio de 2011, 21:27
Uma demonstração de como a conversão funciona: No Windows, que usa o charset WINDOWS-1252, por default, criei o arquivo texto testew1252.txt com uma linha escrita: "Está cheio de acentuação."... Dai, no Linux, vamos dar uma olhada no arquivo:

$ hd testew1252.txt
00000000  45 73 74 e1 20 63 68 65  69 6f 20 64 65 20 61 63  |Est. cheio de ac|
00000010  65 6e 74 75 61 e7 e3 6f  2e 0a                    |entua..o..|


Como pode observar, os bytes da posição 3, 21 e 22 são E1, E7 e E3, correspondedo ao 'á', 'ç' e 'ã', de acordo com a tabela em http://en.wikipedia.org/wiki/Windows-1252.

Depois de converter com o iconv:

$ iconv -f WINDOWS-1252 -t UTF-8 testw1252.txt -o testUTF8.txt
$ hd testUTF8.txt
00000000  45 73 74 c3 a1 20 63 68  65 69 6f 20 64 65 20 61  |Est.. cheio de a|
00000010  63 65 6e 74 75 61 c3 a7  c3 a3 6f 2e 0a           |centua....o..|


Como pode observar o 'á' corresponde ao código C3 A1, o 'ç' corresponde a C3 A7 e o 'ã' ao C3 A3. O arquivo testeUTF8.txt tem agora exatamente 3 bytes adicionais, em relação ao original. E. se você abrir o arquivo com um editor que preste ou usar o comando cat, verá:

$ cat testUTF8.txt
Está cheio de acentuação.


Com todos os acentos convertidos!


Mas que interessante isso. Que bom seria se sempre conseguíssemos alguns exemplos simples mostrando as diferenças entre o linux e o outro.
Parabéns pelo exemplo. Vou testar aqui no meu.

ps:
CitarComo pode observar o 'á' corresponde ao código C3 A1, o 'ç' corresponde a C3 A7 e o 'ã' ao C3 A3. O arquivo testeUTF8.txt tem agora exatamente 3 bytes adicionais, em relação ao original. E. se você abrir o arquivo com um editor que preste ou usar o comando cat, verá:

o fato de ter dois associados ao caractere é pelo fato de ele ser composto? Por exemplo, um para o c e outro para o cedilha, daí ele usa os dois para produzir ç?

fpissarra

Citação de: sigur online 30 de Maio de 2011, 09:09
o fato de ter dois associados ao caractere é pelo fato de ele ser composto? Por exemplo, um para o c e outro para o cedilha, daí ele usa os dois para produzir ç?

Neste caso não... esses são os códigos dos caracteres mesmo. Mas UTF-8 consegue fazer composições sim. Por exemplo, você pode colocar acentos em certos caracteres com composição: ŜẌÝ

Esses três caracteres têm códigos: C5 9C (Ŝ - não é "composto"), E1 BA 8C (Ẍ - é "composto") e C3 9D 0A (Ý que também é composto). Para detalhes adicionais:

http://www.ejungleblog.com/2009/05/13/acentuar-ou-nao-acentuar-questao-complicada/
http://www.ejungleblog.com/2009/05/15/complicando-as-coisas-mais-sobre-utf-8/
http://www.ejungleblog.com/2011/03/04/utf-8-wchar_t-ou-outro-formato/