Gibt es eine Möglichkeit, PHP `json_encode` mit encode UTF-8 und nicht Unicode zurückzugeben?

json_encode Möglichkeit, PHP json_encode mit encode UTF-8 und nicht Unicode zurückzugeben?

 $arr=array('a'=>'á'); echo json_encode($arr); 

mb_internal_encoding('UTF-8'); und $arr=array_map('utf8_encode',$arr); repariert es nicht.

Ergebnis: {"a":"\u00e1"}

Erwartetes Ergebnis: {"a":"á"}

{"a":"\u00e1"} und {"a":"á"} sind verschiedene Möglichkeiten, dasselbe JSON-Dokument zu schreiben; Der JSON-Decoder dekodiert den Unicode-Escape.

In PHP 5.4+ hat json_encode JSON_UNESCAPED_UNICODE Option JSON_UNESCAPED_UNICODE für die einfache Ausgabe. Bei älteren PHP-Versionen können Sie Ihren eigenen JSON-Encoder ausrollen, der keine Nicht-ASCII-Zeichen codiert, oder den JSON-Encoder von Pear verwenden und die Zeilen 349 bis 433 entfernen.

Diese hier gefundene function funktioniert gut für mich

 function jsonRemoveUnicodeSequences($struct) { return preg_replace("/\\\\u([a-f0-9]{4})/e", "iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')))", json_encode($struct)); } 

Ich habe mein Problem damit getriggers:

  • Die .php-Datei ist nach ANSI codiert. In dieser Datei befindet sich die function zum Erstellen der .json-Datei.
  • Ich verwende json_encode($array, JSON_UNESCAPED_UNICODE) , um die Daten zu kodieren;

Das Ergebnis ist eine .json-Datei, die in ANSI als UTF-8 codiert ist.

Verwenden Sie JSON_UNESCAPED_UNICODE innerhalb von json_encode() wenn Ihre PHP-Version> = 5.4 ist.

benutze das einfach,

 utf8_encode($string); 

Sie müssen Ihr $arr durch $string ersetzen.

Ich denke, es wird funktionieren … versuchen Sie es.