[SP-pm] Malformed UTF-8

Renato Santos renato.cron at gmail.com
Wed Sep 22 15:35:31 PDT 2010


@marcio
Essa ideia eu tive lendo como os browsers têm problemas pra começar a
renderizar antes de achar a tag </head>
Por isso que o IE 6 da bug quando exibi um HTML com menos de <sei la quanto,
mais é bem pouco) bytes. Ele faz alguma POG (que dizer, POG nao, POG pelo
menos funciona) merdinha que duplica, estica, puxa, retorce o conteúdo.

Browsers modernos (leia-se todos depois do IE6! huasuhsa) leêm X bytes, se
não achou o encoding, vai algum default, se der zica no meio do caminho
(malformated), para o mundo (rs) troca o encoding, renderiza tudo de novo.

No seu caso o "renderizar tudo" e "parar o mundo" seria:
"parar o mundo": desfazer tudo que fez até aquele ponto de leitura do XML
"renderizar tudo": recomeçar a ler o XML com um novo "guess" de encoding
Por isso não é nada bom "parar o mundo"


2010/9/22 Renato Santos <renato.cron at gmail.com>

> faz o que eu falei, tenta ler alguns bytes antes pra ler o que o XML diz
> que é. Depois faz o open em si
>
> 2010/9/22 Marcio Ferreira <marciodesouzaferreira at gmail.com>
>
> não achei a solução ideal porque hoje é iso-8859-1 e amanhã vai ser o que ?
>> vou alterar na mão isso ?
>>
>>
>> []s,
>>
>> @webgenes
>> Marcio Ferreira
>>
>> "Perl lives as the 'toolbox for Unix' "
>>
>>
>>
>> 2010/9/22 Renato Santos <renato.cron at gmail.com>
>>
>> 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/
>>>
>>> _______________________________________________
>>> 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/
>



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


More information about the SaoPaulo-pm mailing list