Solution pour la soumission php ajax de caractères chinois tronqués : 1. Utilisez l'encodage utf-8 pour toutes les données, y compris l'encodage de base de données, l'encodage php et l'encodage frontal ; 2. Utilisez les fonctions "JSON" et "arrayRecursive" ; qui code chaque caractère séparément.
L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur Dell G3.
PHP utilise un problème tronqué en chinois ajax
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 Lorsque Ajax interagit avec le backend, PHP ne peut faire écho qu'à une seule donnée, mais nous avons plusieurs données, donc un seul tableau peut être transmis. Cela utilise la fonction json_encode(). La fonction json_encode() permet de convertir les données en json. . données.
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');
Ne sortir qu'un des tableaux :
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 les 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 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 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, 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 s'échapper sans succès, l'utilisation de cette méthode n'est donc pas recommandée) >
Après avoir utilisé ces deux fonctions, le 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!