[Cascavel-pm] UTF-16 em Windows XP

André Garcia Carneiro andre.garcia.carneir em terra.com.br
Domingo Outubro 8 19:28:05 PDT 2006


Olá monges!

Falando em problemas com codificação, recentemente um amigo me procurou para falar de um problema com
codificação que ele está tendo. Trata-se de um software para tratar e-mails chamado ATMAIL. Trablhei um tempo
com esse software, mas nesse período não cheguei a ter problemas. Mas agora esse meu amigo se queixa de que ao
invés de ascentos, cedilhas, tio, etc. aparecem caracteres estranhos, o que provavelmente caracteriza um
problema com codificação. Ele disse que está usando ISO-8859, mas que o banco(mysql) está com um collate utf-8.
Tem como converter sem ter que converter todas as tabelas, e o banco, ou seja, colocar um código no "meio do
caminho" que faça a conversão???



Cheers!!

---------- Cabeçalho original -----------

De: cascavel-pm-bounces+andre.garcia.carneir=terra.com.br em pm.org
Para: "Cascavel Perl Mongers" cascavel-pm em pm.org
Cópia: 
Data: Sun, 8 Oct 2006 00:09:38 -0300
Assunto: Re: [Cascavel-pm] UTF-16 em Windows XP

> 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
> 
> E-mail classificado pelo Identificador de Spam Inteligente Terra.
> Para alterar a categoria classificada, visite
>
http://mail.terra.com.br/protected_email/imail/imail.cgi?+_u=andre.garcia.carneir&_l=1,1160277003.122345.12321.ambrose.hst.terra.com.br,12430,Des15,Des15
> 
> Esta mensagem foi verificada pelo E-mail Protegido Terra.
> Scan engine: McAfee VirusScan / Atualizado em 06/10/2006 / Versão: 4.4.00/4868
> Proteja o seu e-mail Terra: http://mail.terra.com.br/
> 
> 

--
André Garcia Carneiro
Developer(Perl/PHP)
Member of "São Paulo Perl Mongers" - http://sao-paulo.pm.org



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