[SP-pm] Problema com encoding

Luis Motta Campos luismottacampos em yahoo.co.uk
Segunda Julho 23 03:25:53 PDT 2007


On Jul 23, 2007, at 12:07 PM, Wendel Scardua wrote:
> Se fosse assim isso aqui não aconteceria:
>
> perl -e '%my_hash = ( ç  => 1)'
> Unrecognized character \xC3 at -e line 1.
>
> Sendo que "ç" não é uma palavra composta. Se não me engano ele só  
> vira string se bate com o \w+ usual, que foi o que eu quis dizer  
> com "ser um identificador válido". Isto é, perl "estrito" não gosta  
> que se use barewords, mas é bonzinho se elas estiverem à esquerda  
> do => .
>
> Claro que isso é só um palpite meu baseado em observações, não em  
> documentação ^_^;;;

Eu estou usando os valores UTF8 codificados para LATIN1 apenas para  
ajudar voces a ver que o Perl processa corretamente identificadores  
nomeados em UTF8. Desde que você codifique o teu arquivo  
corretamente, pode escrever "c-cedilha" literalmente sem problemas.  
Pode escrever teus identificadores em caracteres árabes, se quiser ;-)

pastures:~ lcampos$ perl -MO=Deparse -Mutf8 -e '%hash = ( \303\247 =>  
q{a} )'
use utf8;
use utf8 ();
(%hash) = ("\347", 'a');

   Hum. Parece que o default char-set do Perl ainda é LATIN1. Eu  
precisei pedir por UTF8 explícitamente.
   Mas funciona, e \w+, BTW, bate com "c" (em UTF8, cedilha é um  
"atributo" do caracter).

   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




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