Portál AbcLinuxu, 9. května 2025 21:11

Dotaz: Perl, XML::Simple a utf8

15.5.2012 11:32 juvi
Perl, XML::Simple a utf8
Přečteno: 247×
Odpovědět | Admin
Zdravím, mám problém s diakritikou: mám XML soubor v UTF8 mám prográmek:

#!/usr/bin/perl

use XML::Simple;

use Data::Dumper;

my $xs = XML::Simple->new(NumericEscape => 0);

my $ref = $xs->XMLin('benzina2012-format.xml');

print Dumper($ref);

vše funguje dobře, ale znaky s diakritikou to konvertuje do podoby: \x{fd} \x{ed} apod. Nepomáhá ani nastavit NumericEscape.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.5.2012 12:16 darkenik
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
Odpovědět | | Sbalit | Link | Blokovat | Admin
use utf8;

http://perldoc.perl.org/utf8.html
15.5.2012 12:32 juvi
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
No, trochu moc jsem to zjednodušil, ono při těchto mých prvních pokusech s perlením na UTF8 jsem zkoušel a rozumný výsledek (nikoliv "Wide character in..."):

use utf8;

use encoding 'utf8';

my $pokus = "nazdar á éř\x{20AC}\n";

print $pokus;

Ovšem XML::Simple, přestože tvrdí, že UTF zpracovává, načte soubor s hlavičkou ...encoding="UTF-8"... tak, ten Dumper vyjede diakritiku ve tvaru \x... sakra, není ten problém v tom Dumperu?
15.5.2012 13:39 buff | skóre: 10 | blog: buff
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
Je to v Dumperu, řešení spatra neznám, ale pohledám.
15.5.2012 13:46 buff | skóre: 10 | blog: buff
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
Zkus se podívat na toto: http://www.perlmonks.org/?node_id=759457
15.5.2012 14:12 juvi
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
Bylo to v Dumperu, to jsem rád. Děkuji.
16.5.2012 13:24 kapet
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
V tom řešení pro ten Dumper je asi ještě dobré přidat escapování znaků uvozovek a případně zpětného lomítka, něco jako
use Data::Dumper;

$Data::Dumper::Useqq = 1; 
{   no warnings 'redefine'; 
    sub Data::Dumper::qquote {
        my $s = shift;
        $s =~ s|\\|\\\\|g;  
        $s =~ s|'|\\'|g; 
        return "'$s'";
    }
}
15.5.2012 18:36 tom
Rozbalit Rozbalit vše Re: Perl, XML::Simple a utf8
man Data::Dumper napsal:
Pure Perl version of "Data::Dumper" escapes UTF-8 strings

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.