Maison > Article > développement back-end > Comment résoudre le code chinois tronqué en php ajax ?
Solution : 1. Utilisez l'encodage UTF-8 pour toutes les données, y compris l'encodage de la base de données, l'encodage PHP et l'encodage frontal ; 2. Utilisez json_encode() et urlencode() pour encoder chaque caractère séparément, puis utilisez La fonction urldecode() effectue le décodage et renvoie la valeur.
Recommandé : "Tutoriel vidéo PHP"
En php, après avoir extrait les données de la base de données, nous allons généralement Extrayez 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 nous avons plusieurs données, donc un seul tableau peut être transmis. (), la fonction json_encode() signifie 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 voir qu'une fois le tableau du tableau formaté en json, les données sont entre crochets [] et les tableaux à l'intérieur sont entre accolades {}, mais ils sont toujours tronqués.
Pour résoudre le problème des caractères tronqués, 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, le codage PHP et le codage front-end.
Méthode 2 : utilisez les 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)
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--; }
Après avoir utilisé ces deux fonctions, le résultat de sortie est :
[{"a":"中国","b":"日本","c":"美国","d":"加拿大","e":"法国"},{"f":"6","g":"7","0":"1","i":"tom","j":"kevin"}]
Pour plus de connaissances liées à la programmation, veuillez visiter : Introduction à la programmation ! !
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!