[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