Maison > Article > développement back-end > Que dois-je faire si mon application php ajax renvoie des caractères tronqués ?
Solution au code tronqué renvoyé par l'application PHP ajax : 1. Convertissez les données reçues en GBK, le code est [iconv(utf-8,'gb2312'$_POST[Data])] ; utilisez JSON pour transmettre, le code est [$json_string=JSON($data)].
Solution pour l'application php ajax renvoyant des caractères tronqués :
1. JS en arrière-plan
Les données AJAX, qu'elles utilisent directement le xmlHttprequest sous-jacent ou qu'elles utilisent l'ajax de jQuery pour la transmission de données, utiliseront ajax pour encoder et envoyer !
Si notre page est en UTF-8, il n'y a pas de problème ! Les données chinoises transmises ne seront pas tronquées !
Si c'est du GB2312~le problème vient ! Le GBK est converti en UTF-8 et envoyé en arrière-plan. A ce moment ce qui est reçu directement en arrière-plan est tronqué !
Solution : Lorsque le langage de fond est PHP
iconv('utf-8','gb2312',$_POST['Data']);
Le principe est très simple : Directement en arrière-plan La réception est UTF-8, et les pages sont toutes en GBK, puis reconvertissez simplement les données reçues en GBK
Ensuite, faites simplement l'opération de base de données. Stockez-les dans la base de données. Ils doivent ! être des caractères chinois normaux !
2. La page d'arrière-plan indique que les données de la base de données contiennent des caractères chinois, puis les renvoie à l'interface JS
Le PHP. page lit les caractères chinois normaux de la base de données et souhaite les renvoyer via AJAX~
Si elles sont renvoyées, les données seront renvoyées directement sous la forme d'une chaîne sans aucun traitement ! Oui ! Le chinois affiche tout normalement sur la première page !
Mais il faut généralement conditionner les données de fond sinon, les données reçues par la réception seront difficiles à traiter !
Si c'est le cas ! est PHP ! Ensuite, nous utilisons désormais généralement JSON pour la transmission ! De cette façon, les données transmises au JS front-end seront très faciles à décompresser et à utiliser !
Lors de l'exécution d'opérations de conversion json en arrière-plan PHP, le problème se pose !
Lors de la conversion de json, vous constaterez que le chinois lu dans la base de données apparaît NULL ou d'autres situations anormales. C'est parce que JSON n'échappe qu'à l'encodage !
Quoi qu'il en soit, JSON Lors de la conversion en chinois, des caractères tronqués apparaissent ~~
La solution est la suivante :
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--; } function JSON($array) { arrayRecursive($array, 'urlencode', true); $json = json_encode($array); return urldecode($json); } $json_string=JSON($data); //$obj = json_decode($json_string); print_r($json_string);
Après ces processus, vous constaterez que les caractères chinois lisent de la base de données par l'arrière-plan PHP sont convertis avec succès au format json et en chinois Cela montre que tout est normal !
Bien sûr, les données reçues par la réception à ce moment sont au format JSON et les caractères chinois sont également normal !
Recommandations d'apprentissage associées : Programmation PHP de l'entrée à la maîtrise
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!