Warum konvertiert die PHP json_encode-Funktion UTF-8-Strings in hexadezimale Entitäten?
Ich habe ein PHP-Skript, das sich mit einer Vielzahl von Sprachen. Leider, immer wenn ich versuche zu verwenden json_encode
, jedes beliebige Unicode-Ausgabe in hexadezimal konvertiert Personen. Ist dies das erwartete Verhalten? Gibt es eine Möglichkeit zur Konvertierung der Ausgabe nach UTF-8-Zeichen?
Hier ist ein Beispiel was ich sehe:
EINGANG
echo $text;
AUSGABE
База данни грешка.
EINGANG
json_encode($text);
AUSGABE
"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
InformationsquelleAutor der Frage David Jones | 2013-05-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit PHP 5.4.0 gibt es eine option namens
"JSON_UNESCAPED_UNICODE"
. Check it out:http://se2.php.net/json_encode
Daher sollten Sie versuchen:
InformationsquelleAutor der Antwort John Severinson
JSON_UNESCAPED_UNICODE ist auf PHP-Version 5.4 oder höher.
Der folgende code ist für die Version 5.3.
AKTUALISIERT
html_entity_decode
ist ein bisschen effizienter alspack
+mb_convert_encoding
.(*SKIP)(*FAIL)
überspringt die backslashes selbst und angegebenen Zeichen durchJSON_HEX_*
flags.InformationsquelleAutor der Antwort mpyw
Ist eine Lösung, um erste Daten zu verschlüsseln und wieder entschlüsseln es in der gleichen Datei:
InformationsquelleAutor der Antwort Steffo Dimfelt
Seit Ihr gefragt:
Andere Lösung ist die Verwendung utf8_encode.
Dadurch wird die Kodierung von string zu
UTF-8
.z.B.
InformationsquelleAutor der Antwort Robin Carlo Catacutan
den
json_encode()
arbeitet nur mit UTF-8-codierte Daten.vielleicht bekommen Sie eine Antwort, um zu konvertieren gibt es hier: Kyrillisch-Zeichen-in-PHP-json-encode
InformationsquelleAutor der Antwort JoakimH