Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Dear Monks,
I'm just a bit confused by the behaving of the XML::Parser. I have an UTF-8 encoded string in $xml (Müller in the (P)CDATA section) and I like to get it in UTF-8 on the output.
Please let me understand why I need to set ProtocolEncoding to 'ISO-8859-1' to get the UTF-8 encoded data as UTF-8 and not as iso-8859-1. Also let me know if this will first translate the data to iso-8859-1 and then back to UTF-8.#!/usr/bin/perl use XML::Parser; $xml = "<word>Müller</word>"; $ch = sub { my ($p, $w) = @_; print "$w\n"; }; # the next commented 2 lines mean the same # and translate the output to iso-8859-1 # $p = XML::Parser->new(); # $p = XML::Parser->new(ProtocolEncoding => 'UTF-8'); # this line do the right job, but why?? $p = XML::Parser->new(ProtocolEncoding => 'ISO-8859-1'); $p->setHandlers('Char' => $ch); $p->parse($xml);
Disclaimer: It's not my decision to use XML::Parser, even if i like/dislike it. It's used by an module and it's out of discussion if this or that xml parser is better or not.
thank you so much & hear my prayer
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: UTF-8 and XML::Parser
by remiah (Hermit) on Oct 14, 2012 at 02:35 UTC | |
by Anonymous Monk on Oct 14, 2012 at 03:56 UTC | |
by remiah (Hermit) on Oct 14, 2012 at 04:26 UTC | |
by Anonymous Monk on Oct 14, 2012 at 05:49 UTC | |
by remiah (Hermit) on Oct 14, 2012 at 06:33 UTC | |
by Anonymous Monk on Oct 14, 2012 at 02:51 UTC | |
by choroba (Cardinal) on Oct 14, 2012 at 07:37 UTC | |
Re: UTF-8 and XML::Parser
by grantm (Parson) on Oct 15, 2012 at 20:48 UTC |
Back to
Seekers of Perl Wisdom