Bei der Verwendung von ThinkPhp5.1-Entwicklungsprojekt ist das Konvertieren von Arrays in JSON-Zeichenfolgen eine übliche Operation, aber manchmal erscheint ein Fehler der "Daten können nicht in JSON konvertiert werden", was sich als Fehler manifestiert, der von der Funktion json_encode gemeldet wird: Ungültige UTF-8-Sequenz im Argument. Dies wird normalerweise durch das Array verursacht, das nicht-UTF-8-codierte Zeichen enthält, wie z.
Es gibt zwei Hauptmöglichkeiten, um diese Art von Problem zu lösen: Verwenden Sie PHP-integrierte Funktionen, um die Codierung zu konvertieren, oder verwenden Sie die JSON-Conversion-Methode von ThinkPhp.
Die iConv () -Funktion von PHP kann die Charaktercodierungskonvertierung implementieren. Für nicht-UTF-8-kodierte Array-Elemente können sie mit iConv () in UTF-8-codiert und dann JSON_Encode () bezeichnet werden. Der Beispielcode lautet wie folgt:
$ array = array ('name' => 'zhang san', 'ay' => 18, 'Adresse' => 'xxx Road, XXX District, Peking'); $ json_str = json_encode ($ array, json_unescaped_unicode); // Ein Fehler kann für Each gemeldet werden ($ Array als $ k => $ v) { $ array [$ k] = iconv ("gbk", "utf-8", $ v); } $ json_str = json_encode ($ array, json_unescaped_unicode); echo $ json_str;
Wenn Sie hier versuchen, das Array von JSON_Encode direkt zu verwenden, wird es fehlschlagen. Durch Überqueren, Konvertieren der Codierung mit iConv und dann JSON -Codierung können Sie die JSON -Zeichenfolge erfolgreich generieren.
ThinkPhp5.1 bietet eingekapselte JSON -Auxiliary -Klassen, mit denen Arrays direkt in JSON -Zeichenfolgen umwandeln und automatisch Codierungsprobleme behandelt werden können. Das Codebeispiel lautet wie folgt:
Verwenden Sie Think \ Helper \ json; $ array = array ('name' => 'zhang san', 'ay' => 18, 'Adresse' => 'xxx Road, XXX District, Peking'); $ JSON_STR = JSON :: CODE ($ Array); echo $ json_str;
Diese Methode erfordert keine manuelle Konvertierung und Codierung, die den Entwicklungsprozess vereinfacht und für die Verwendung in ThinkPhp -Projekten empfohlen wird.
Das Codierungsproblem beim Umwandeln von Arrays in JSON ist eine häufige Fallstricke. Die meisten von JSON_Encode gemeldeten Fehler beziehen sich auf die Zeichencodierung. Die JSON :: -Encode -Methode von Iconv Conversion oder ThinkPhp kann gemäß der tatsächlichen Situation ausgewählt werden, um die korrekte Datencodierung zu gewährleisten und die Code -Effizienz zu verbessern. Wenn Sie diese beiden Methoden verstehen und beherrschen, werden JSON -Konvertierungsfehler vermieden, die durch Codierungsprobleme in der Entwicklung verursacht werden.