Maison >développement back-end >Problème PHP >Comment résoudre le problème chinois tronqué de php ajax
Solution aux caractères chinois tronqués dans PHP Ajax : 1. Toutes les données sont codées en UTF-8, y compris l'encodage de base de données, l'encodage PHP et l'encodage frontal ; 2. Utilisez la méthode arrayRecursive pour encoder chaque caractère séparément. .
Recommandé : "Tutoriel vidéo PHP"
Problème php ajax chinois tronqué
En php, après avoir extrait les données de la base de données, nous extrayons généralement plusieurs lignes de données à la fois. Si le front-end js utilise ajax pour interagir avec le back-end, php ne peut faire écho qu'à une seule donnée, mais notre. data has Il y en a plusieurs, donc un seul tableau peut être transmis. Cela utilise la fonction json_encode() pour convertir les données en données json.
Voyons comment convertir un tableau
php :
Nous créons d'abord deux tableaux en php, l'un contient du chinois, l'autre contient des chiffres ou de l'anglais, et enfin les sorties Jetez un oeil. Idée : Les valeurs associées sont plus intuitives
$gg=array('a'=>'中国','b'=>'日本','c'=>'美国','d'=>'加拿大','e'=>'法国'); $yy=array('f'=>'6','g'=>'7','h'>='8','i'=>'tom','j'=>'kevin');
Un seul des tableaux est affiché :
echo $json=json_encode($gg);
Le résultat de sortie est le suivant
{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"}
Il y a des accolades sur des deux côtés, et les caractères sont tronqués
Mettez deux tableaux dans un seul tableau et affichez-les en même temps
echo $json=json_encode(array($gg,$yy));
Le résultat de sortie est le suivant :
[{"a":"\u4e2d\u56fd","b":"\u65e5\u672c","c":"\u7f8e\u56fd","d":"\u52a0\u62ff\u5927","e":"\u6cd5\u56fd"},{"f":"6","g":"7","0":true,"i":"tom","j":"kevin"}]
Nous pouvons voyez qu'une fois le tableau du tableau formaté en json, les données sont installées dans [] Entre parenthèses, les tableaux à l'intérieur sont entre accolades {}, mais ils sont toujours tronqués.
Pour résoudre le problème du code tronqué, il existe deux méthodes,
Méthode 1 : toutes les données sont codées uniformément en UTF-8, y compris l'encodage à partir de la base de données, l'encodage PHP et l'encodage frontal.
Méthode 2 : utilisez les deux fonctions suivantes pour encoder chaque caractère séparément : (Certains symboles semblent ne pas réussir à s'échapper, l'utilisation de cette méthode n'est donc pas recommandée) >
Après avoir utilisé ces deux fonctions, le résultat de sortie est :function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); } function arrayRecursive(&$array, $function, $apply_to_keys_also = false){ static $recursive_counter = 0; if (++$recursive_counter > 1000) { die('possible deep recursion attack'); } foreach ($array as $key => $value) { if (is_array($value)) { arrayRecursive($array[$key], $function, $apply_to_keys_also); } else { $array[$key] = $function($value); } if ($apply_to_keys_also && is_string($key)) { $new_key = $function($key); if ($new_key != $key) { $array[$new_key] = $array[$key]; unset($array[$key]); } } } $recursive_counter--; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!