[SP-pm] Malformed UTF-8

Renato Santos renato.cron at gmail.com
Wed Sep 22 15:01:42 PDT 2010


Marcio PD,
Não entendi porque não disse que nao queria fazer assim,

é o jeito mais "certin" é deixar o perl se virar pra entregar o encoding
certo pra vc.

Você apenas "informa" qual o encoding do conteudo que esta lendo e a magica
está pronta.


Agora levando em consideração (não UTF16/32 ou outro encoding que os
caracteres basicos [a-z,numeros,_,<,>] do xml são os mesmos bytes do ASCII)
Você pode ler uns 1000 bytes em UTF8 ou Latin1, bater uma expressão mais ou
menos assim:
encoding\s*\=\s*\"?([^\"]+)\"?[\s\>]
pra "ler" a parte do "encoding" do XML e fazer o Open completo depois.

Depois que comecei a usar o open com :encoding(XXX) nunca mais tive
problemas com essa desgraça que me atrapalhou por anos (rs, se é que posso
falar em anos!)

2010/9/21 Marcio Ferreira <marciodesouzaferreira at gmail.com>

> Resolvi meu problema,
>
> Eu abri o XML com open '<:encoding(iso-8859-1)' mesmo e passei para o
> XML::Bare a string com o conteúdo do XML.
>
> Não é a forma que eu gostaria de ter resolvido, mas me serviu.
>
> Valeu
>
> []s,
>
> @webgenes
> Marcio Ferreira
>
> "Perl lives as the 'toolbox for Unix' "
>
>
>
> 2010/9/21 Andre Carneiro <andregarciacarneiro at gmail.com>
>
>> Infelizmente eu não conheço nenhuma que seja eficiente . Você pode tentar
>> o Encode::Guess como eu falei, ou tentar achar outra maneira. Aliás se
>> achar, escreva um artigo e manda pro Thiago, pq com certeza será útil para
>> todos... ;-)
>>
>> Cheers!
>>
>>
>> 2010/9/21 Marcio Ferreira <marciodesouzaferreira at gmail.com>
>>
>> Tenho ciência disso André,
>>>
>>> pensei que houvesse uma solução mais óbvia que converter strings ou o
>>> arquivo antes de abri-lo.
>>>
>>>
>>> []s,
>>>
>>> @webgenes
>>> Marcio Ferreira
>>>
>>> "Perl lives as the 'toolbox for Unix' "
>>>
>>>
>>>
>>> 2010/9/21 Andre Carneiro <andregarciacarneiro at gmail.com>
>>>
>>> Problemas com codificação não são exclusivos do XML::Bare. Normalmente
>>>> são problemas oriundos dos 'gênios' que constroem as 'apps', 'webservices',
>>>> ou o 'diabo' que for, que 'cospem' o XML com cabeçalhos inconsistentes,
>>>> codificação errada, codificação mista, etc. etc. etc. Isso eu posso falar pq
>>>> lido com essa porcaria quase todo santo dia, e eu o XML::Bare e vários
>>>> outros parsers. A melhor estratégia que eu pude implementar foi converter as
>>>> codificações quando possível e traduzir os caracteres, mantendo uma tabela
>>>> de tradução que cresce cada vez menos agora.
>>>>
>>>> O ideal seria ter algo que detectasse a codificação de um caracter para
>>>> corrigir diretamente, mas isso é muito difícil de implementar de forma
>>>> eficiente, pelo que eu vejo. Tem algumas tentativas como o Encode::Guess.
>>>> Mas por experiência própria não é sempre que funciona, e sinceramente não
>>>> tive paciência e nem tempo pra testar isso direito... Fique a vontade para
>>>> tentar.
>>>>
>>>>
>>>> Cheers!
>>>>
>>>>
>>>>
>>>> Em 21 de setembro de 2010 12:41, Nilson Santos Figueiredo Jr. <
>>>> acid06 at gmail.com> escreveu:
>>>>
>>>> 2010/9/20 Marcio Ferreira <marciodesouzaferreira at gmail.com>:
>>>>> > só amanhã do trabalho, mas basicamente eu uso o XML::Bare para
>>>>> carregar o
>>>>> > XML, faço um trim nos abributos do XML, já que o XML::Bare não o faz.
>>>>>
>>>>> Provavelmente o XML::Bare, por ser um parser mais "tosco", está
>>>>> assumindo que o conteúdo está em UTF8 e está setando a flag de UTF8 na
>>>>> string.
>>>>>
>>>>> -Nilson
>>>>> _______________________________________________
>>>>> SaoPaulo-pm mailing list
>>>>> SaoPaulo-pm at pm.org
>>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> André Garcia Carneiro
>>>> Analista/Desenvolvedor Perl
>>>> (11)82907780
>>>>
>>>> _______________________________________________
>>>> SaoPaulo-pm mailing list
>>>> SaoPaulo-pm at pm.org
>>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>>
>>>
>>>
>>> _______________________________________________
>>> SaoPaulo-pm mailing list
>>> SaoPaulo-pm at pm.org
>>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>>
>>
>>
>>
>> --
>> André Garcia Carneiro
>> Analista/Desenvolvedor Perl
>> (11)82907780
>>
>> _______________________________________________
>> SaoPaulo-pm mailing list
>> SaoPaulo-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>>
>
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm at pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20100922/113f6134/attachment.html>


More information about the SaoPaulo-pm mailing list