[Cascavel-pm] UTF-16 em Windows XP
Alceu R. de Freitas Jr.
glasswalk3r em yahoo.com.br
Sexta Outubro 6 16:23:09 PDT 2006
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/
Mais detalhes sobre a lista de discussão Cascavel-pm