[Cascavel-pm] UTF-16 em Windows XP

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Terça Dezembro 11 16:13:41 PST 2007


Oi monges,

Achei isso aqui perdido na minha caixa postal do
Yahoo!  resolvi "ressuscitar" o assunto.

Eu consegui resolver esse problema e criei um artigo
curto (receita) no perl.org.br
(http://perl.org.br/bin/view/Artigos/LerArquivoUTF16).

Feedbacks e correções são bem vindos.

[]'s
Alceu

--- Lorn <lorn.br em gmail.com> escreveu:

> Putz, como dizemos no trabalho um "misterio da
> meia-noite", eu já tive esse
> problema de chomp não tirar \n\r tive que usar
> substituicao também, e se
> UTF-8 é ruim, UTF-16 deve ser pior ainda, não sei se
> pode te ajudar, mas eu
> não uso o encoding para manipular UTF-8 => ISO-8859,
> no Linux eu usava um
> programa chamado iconv, ai quando precisei fazer
> algo parecido eu procurei o
> iconv no cpan e achei, o modulo Text::Iconv se não
> me engano, funciona muito
> bem comigo ( apesar que eu nunca testei com UTF-16
> ),  será que há alguma
> vantagem/desvantagem entre Iconv e o encoding? é só
> para dar meu centésimo
> de um centavo, faca o teste com o Text::Iconv, não
> custa nada ;)
> 
> cya
> 
> On 10/6/06, Alceu R. de Freitas Jr.
> <glasswalk3r em yahoo.com.br> wrote:
> >
> > Olá monges,
> >
> > Estive manipulando arquivos em UTF-16 da seguinte
> > forma:
> >
> > open( CONTACT, "<:raw:encoding(UTF-16LE)",
> > $contact_file ) or die "Cannot read $contact_file:
> > $!\n";
> >
> > open( ACT, "<:raw:encoding(UTF-16LE)", $other_file
> )
> > or die "Cannot read $other_file: $!\n";
> >
> > open( NEW, ">:raw:encoding(UTF-16LE)",
> $new_other_file
> > )  or die "Cannot create $new_other_file: $!\n";
> >
> > Isso estava funcionando muito bem, até eu pegar um
> > novo arquivo. Depois de ler o arquivo original e
> criar
> > um novo (handle NEW), o arquivo sai uma salada só.
> > Aqui está a lógica que usei:
> >
> > while (<ACT>) {
> >
> >     @line = split( /\|/, $_ );
> >
> >     if ( exists( $contacts{ $line[$line_field2] }
> ) )
> > {
> >
> >         print NEW;
> >
> >     }
> >
> >     @line = ();
> >
> >     print "\b", $progress_char[$progress_counter];
> >     $progress_counter++;
> >     $progress_counter = 0 if ( $progress_counter >
> > scalar(@progress_char) - 1 );
> >
> > }
> >
> > Eu manipulei esse trecho do código tentando isolar
> o
> > problema. Se eu simplesmente excluo o código
> > condicional, o arquivo é criado perfeitamente. Se
> > deixo ele, a cada caracter impresso, um caracter
> NUL é
> > impresso também, à direita. Eu não consigo abrir
> mais
> > visualizar o conteúdo do arquivo recém criado no
> VIM
> > ou no Excel, por exemplo (mas consigo com o
> Notepad).
> >
> > Eu tentei usar Encode (para converter o pipe para
> > UTF-16LE) e Encode::Guess, sem sucesso. Eu
> > simplesmente estou sem pistas nenhuma do que pode
> > estar acontecendo. A princípio eu achei que
> poderia
> > ser a quebra de linha (e para minha surpresa,
> chomp
> > não funcionou, tive que usar s/\r\n//) mas depois
> de
> > alguns testes descartei a possibilidade. Alternar
> para
> > :raw:encoding(UTF-16BE) e :raw:encoding(UTF-16)
> também
> > não ajudou.
> >
> > Alguém já sofreu com isso?
> >
> > []'s
> >
> >
> > Alceu Rodrigues de Freitas Junior
> > --------------------------------------
> > glasswalk3r em yahoo.com.br
> > http://www.imortais.cjb.net
> >
>
-----------------------------------------------------------------------
> > A well-used door needs no oil on its hinges.
> > A swift-flowing stream does not grow stagnant.
> > Neither sound nor thoughts can travel through a
> vacuum.
> > Software rots if not used.
> > These are great mysteries -- The Tao Of
> Programming, 5.1
> >
> >
> >
> >
> >
> >
> >
> >
> >
>
_______________________________________________________
> > Você quer respostas para suas perguntas? Ou você
> sabe muito e quer
> > compartilhar seu conhecimento? Experimente o
> Yahoo! Respostas !
> > http://br.answers.yahoo.com/
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> >
> 
> 
> 
> -- 
> Lorn
> - Slackware Linux
> www.slackwarezine.com.br
> - http://lornlab.org
> > _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm



      Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento!
http://br.mail.yahoo.com/


Mais detalhes sobre a lista de discussão Cascavel-pm