json_decode() mag keine Umlaute !?

rollerueckwaerts

Erfahrenes Mitglied
Hallo liebe tutorials.de Community,

ich sende momentan UTF8-JSON-Strings vom Mobiltelefon an einen Webserver und lese diese dort mit
PHP:
	$request= json_decode(file_get_contents('php://input'),true);
aus.

Das klappt wunderbar, solange bis der JSON String ein ö enthält, danach ist mein Objekt nach json_decode() null :(

Woran kann es liegen ? Der JSON-String wurde mit nem Validator getestet, alles ok.


Lieben Dank schonmal jetzt !!
 
Du könntest versuchen, mit utf8_encode() bzw. _decode() zu spielen. Das Problem liegt darin, das hier keiner sagen kann, in welchem Zeichensatz das vom Handy ankommt und in welchem Zeichensatz dein Webserver das interpretiert.

Wenn du PHP 5.3 oder neuer einsetzt, kannst du evtl. mit json_last_error() herausfinden, was das Problem ist.
 
Okay .. der Tipp mit json_last_error() klingt gut. Hab mein Webspace nun auf PHP 5.3 umgestellt. Hoffentlich macht das keine Probleme bei anderen Projekten auf dem Webspace ...

Vom Handy schicke ich es auf jeden Fall als utf8string. Kann ich irgendwie nachprüfen als was das der Webserver interpretiert ? Oder ihn zwingen das das er es als UTF8 ansieht?
 
Das kommt darauf an. Im Normalfall würde ich sagen, das der Webserver in seiner Standard-Einstellung eine ISO-Codepage verwendet. Du müsstest an dieser Stelle meiner Meinung nach 2 Dinge tun:

1. Das PHP-Script sollte selbst natürlich Unicode sein, prüf das bspw. mit Notepad++ nach und stell es ggf. um.
2. Es könnte an dieser Stelle dann tatsächlich helfen, den eingehenden String, also das, was bei file_get_contents('php://input') kommt durch utf8_decode() zu schicken. Das Resultat wäre dann ein ISO-1 String, aber nur, wenn da auch lediglich ISO-1 Zeichen drin sind. Es könnte schief laufen, wenn da bspw. Zeichen aus ISO-8859-2 oder anderen nicht ISO-1-Codepages drin sind.
 
Zurück