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

haj
 2023-05-14 22:11
#194879 #194879
User since
2015-01-07
527 Artikel
BenutzerIn

user image
2023-05-14T12:47:45 rosti
Wenn ich mit obenstehender Hashref notiere: print to_json( $h, { utf8 => 0 } ); ist die Ausgabe korrekt aber der Code ist eben verwirrend um nicht zu sagen blödsinnig. Denn übergeben wurden ja ganz sicher die richtigen Bytes für ein utf-8-kodiertes Eurozeichen. utf8 => 0 => WTF.
Du kannst das andersrum sehen: Das { utf8 => 0 } beschreibt nicht Deinen Input, sondern ist die Verarbeitungsanweisung "Nicht nach utf8 konvertieren".

2023-05-14T12:47:45 rosti
Wenn man also korrekt sein will und gleichermaßen einen verständlichen Code schreiben soll, müsste man für sämtliche Strings die an JSON übergeben werden die Kodierung einschalten.
Ja. Das entspräche auch der generellen Empfehlung, Daten zum frühest möglichen Zeitpunkt zu decodieren. Denn es ist keineswegs selbstverständlich, dass die Daten alle in UTF-8-Codierung daherkommen. Ich hatte beruflich mit Langzeitarchiven zu tun, da sollten die Auswertungen "zeitgemäß" in UTF-8 kommen - aber die Ausgangsdaten waren in unterschiedlichen Codierungen. In den 1970ern gab es noch kein UTF-8...

2023-05-14T12:47:45 rosti
Ob das bei Datenstrukturen die mehrere tausend einzelne Strings beinhalten sinnvoll ist, sei mal dahingestellt ;)
Wenn man die Bytes beibehält, riskiert man falsche Ergebnisse bei regulären Ausdrücken und anderen Perl-Funktionen. Sinnvoll ist es also.

View full thread JSON und utf8