История изменений
Исправление
gh0stwizard,
(текущая версия)
:
Это фича Data::Dumper, забей.
#!/usr/bin/perl -w
use strict;
use JSON::XS;
use Encode ();
my $file = $ARGV[0] || 'file.json';
open ( my $fh, "<:raw", $file )
or die "open $file: $!";
my $text = do { local $/; <$fh> };
close $fh;
my $p5 = JSON::XS->new->decode( $text );
# p5 internal unicode
# no warnings about Wide characters
printf "%s = %s [p5]\n", $_, $p5->{ $_ } for keys %$p5;
my $unicode = JSON::XS->new->decode( &Encode::decode_utf8($text) );
# the same as JSON::XS->new->utf8(1)->decode( $text );
{
binmode STDOUT, ":utf8";
printf "%s = %s [utf8]\n", $_, $unicode->{ $_ } for keys %$unicode;
}
{
use utf8;
use Data::Dumper;
print Dumper { "тест" => "Dumper плохой" };
}
Как ни крути, а Data::Dumper не проведешь. Если Dumper начнет выводить текст как есть, то это уже не будет дампов (такие дела, спроси у разрабов на RT, пусть фичей сделают//вернут все взад).
Исходная версия
gh0stwizard,
:
Это фича Data::Dumper, забей.
#!/usr/bin/perl -w
use strict;
use JSON::XS;
use Encode ();
my $file = $ARGV[0] || 'file.json';
open ( my $fh, "<:raw", $file )
or die "open $file: $!";
my $text = do { local $/; <$fh> };
close $fh;
my $p5 = JSON::XS->new->decode( $text );
# p5 internal unicode
# no warnings about Wide characters
printf "%s = %s [p5]\n", $_, $p5->{ $_ } for keys %$p5;
my $unicode = JSON::XS->new->decode( &Encode::decode_utf8($text) );
# the same as JSON::XS->new->utf8(1)->decode( $text );
{
binmode STDOUT, ":utf8";
printf "%s = %s [utf8]\n", $_, $unicode->{ $_ } for keys %$unicode;
}
{
use utf8;
use Data::Dumper;
print Dumper { "тест" => "Dumper плохой" };
}
Как ни крути, а Data::Dumper не проведешь.