Thread JSON und utf8 (25 answers)
Opened by rosti at 2018-05-06 18:58

haj
 2018-05-06 20:22
#188347 #188347
User since
2015-01-07
483 articles
BenutzerIn

user image
Die interne Darstellung von Charactern in Perl ist einigerma├čen verrenkt.
Dazu nehme man folgenden Dreizeiler:

Code: (dl )
1
2
3
use utf8;
print "Fünf\n";
print "Fünf €\n";


Ohne besondere Vorkehrungen sieht das bei mir so aus:
Code: (dl )
1
2
3
F�nf
Wide character in print at a.pl line 3.
Fünf €


Deswegen empfehle ich, immer explizite Vorgaben zu machen, wie etwas ausgegeben werden soll.
Im JSON-Beispiel funktionieren folgende zwei Varianten:

Code: (dl )
1
2
3
4
5
use JSON;
use utf8;
my $r = {foo => "Fünf € Lösung"};
binmode STDOUT,':bytes';
print JSON->new->utf8(1)->encode($r),"\n";


oder

Code: (dl )
1
2
3
4
5
use JSON;
use utf8;
my $r = {foo => "Fünf € Lösung"};
binmode STDOUT,':encoding(UTF-8)';
print JSON->new->utf8(0)->encode($r),"\n";

Genau eine Komponente muss das Umwandeln machen: Entweder JSON oder Perl's I/O-Layer.

View full thread JSON und utf8