Position actuelle: Accueil> Derniers articles> Explication détaillée des erreurs et solutions au tableau ThinkPhp5.1 à JSON

Explication détaillée des erreurs et solutions au tableau ThinkPhp5.1 à JSON

gitbox 2025-08-05

Description du problème

Lorsque vous utilisez le projet de développement ThinkPhp5.1, la conversion des tableaux en chaînes JSON est une opération courante, mais parfois une erreur de "données ne peut pas être convertie en JSON" apparaît, qui se manifeste comme une erreur rapportée par la fonction JSON_ENCODOCE: séquence UTF-8 non valide dans l'argument. Ceci est généralement causé par le tableau contenant des caractères codés non UTF-8, tels que les caractères codés GBK sous Windows, tandis que la norme JSON nécessite que la chaîne soit codée UTF-8.

Solution

Il existe deux façons principales de résoudre ce type de problème: utilisez des fonctions intégrées PHP pour convertir le codage ou utiliser la propre méthode de conversion JSON de ThinkPHP.

Convertir le codage à l'aide de fonctions PHP

La fonction iconv () de PHP peut implémenter la conversion de codage de caractères. Pour les éléments de tableau non codés non codés, ils peuvent être convertis en UTF-8 en codé à l'aide d'Iconv () puis appelés json_encode (). L'exemple de code est le suivant:

$ array = array ('name' => 'zhang san', 'age' => 18, 'adresse' => 'xxx road, xxx district, beijing');
$ json_str = json_encode ($ array, json_unescaped_unicode); // une erreur peut être signalée pour un foreach ($ array comme $ k => $ v) {
    $ array [$ k] = iconv ("gbk", "utf-8", $ v);
}

$ json_str = json_encode ($ array, json_unescaped_unicode);
echo $ json_str;

Ici, si vous essayez d'utiliser directement le tableau json_encode, il échouera. Ensuite, en traversant, en convertissant le codage avec iconV, puis en effectuant un codage JSON, vous pouvez générer avec succès la chaîne JSON.

Méthode de conversion JSON à l'aide de l'encapsulation ThinkPhp

ThinkPhp5.1 fournit des classes auxiliaires JSON encapsulées, qui peuvent convertir directement les tableaux en chaînes JSON et gérer automatiquement les problèmes d'encodage. L'exemple de code est le suivant:

Utilisez Think \ Helper \ JSON;

$ array = array ('name' => 'zhang san', 'age' => 18, 'adresse' => 'xxx road, xxx district, beijing');
$ JSON_STR = JSON :: Encode ($ array);
echo $ json_str;

Cette méthode ne nécessite pas de conversion et de codage manuels, ce qui simplifie le processus de développement et est recommandé pour une utilisation dans les projets ThinkPHP.

Résumer

Le problème d'encodage lors de la conversion des tableaux en JSON est un écueil courant. La plupart des erreurs rapportées par JSON_ENCODOCHE sont liées au codage des caractères. La conversion iconV ou la méthode JSON :: Encode de ThinkPhp peut être sélectionnée en fonction de la situation réelle pour garantir le codage des données correct et améliorer l'efficacité du code. La compréhension et la maîtrise de ces deux méthodes aideront à éviter les échecs de conversion JSON causés par les problèmes de codage de développement.