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

haj
 2018-05-07 18:46
#188356 #188356
User since
2015-01-07
527 Artikel
BenutzerIn

user image
Du magst vielleicht doch mal einen Blick auf die Dokumentation werfen (https://metacpan.org/pod/JSON#encode_json):
Quote
Converts the given Perl data structure to a UTF-8 encoded, binary string (that is, the string contains octets only).

Da ist es schon etwas eigensinnig, zu postulieren, dass die Methode eben dies nicht machen sollte, zudem es ja auch parallel eine Funktion to_json gibt, die nicht kodiert.

Die mit encode_json erzeugten Bytewürste kann man durchaus korrekt auf Dateien, Sockets und Handles schreiben, wenn man das geeignete Encoding verwendet oder eben mit syswrite den I/O-Layer umgeht.

Du encodierst in Deinem Beispiel zweimal: Einmal dadurch, dass Du für ein zwei-Byte UTF-8-Literal kein use utf8 verwendest, und zum zweiten Mal dadurch, dass Du utf8(1) bzw. encode_json anstelle von to_json verwendest. Dem wirkst Du entgegen, indem Du beim print auf das UTF-8-Encoding verzichtest, obwohl Du UTF-8-Output erwartest. Das kann nichts werden.

Das in Deinem letzten Posting kopierte Gruselbeispiel zeugt von einer weiteren Annahme, nämlich der, dass die Windows-Konsole von Haus aus mit UTF-8 etwas anfangen kann. Dazu magst Du vielleicht dann doch mit dem Kommando chcp 65001 auch die entsprechende Codepage einstellen. Ich kann Dein Beispiel genau reproduzieren, indem ich Deinen falschen Code in einer Windows-Konsole mit Codepage 1252 ausführe. Mit den von mir angegebenen Codebeispielen und der passenden Codepage 65001 funktioniert es auch unter Windows tadellos.

View full thread JSON und utf8