Cet article présente principalement la différence entre le navigateur IE et le navigateur FF lorsque la valeur du paramètre Ajax est chinoise. Il combine l'exemple d'analyse pour expliquer les précautions et les compétences d'utilisation liées au transcodage des paramètres dans le processus de transfert des paramètres ajax. peut se référer à
L'exemple de cet article décrit la différence entre le navigateur IE et le navigateur FF lorsque la valeur du paramètre Ajax est chinoise. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :
J'ai déjà présenté "Les paramètres de transmission Javascript basés sur la fonction de rappel AJAX" Ici, nous analysons principalement la méthode de traitement tronquée pour différents navigateurs dans le processus d'ajax. passer des paramètres chinois.
Des caractères tronqués apparaissent lorsque Ajax transmet des paramètres en chinois. La situation que j'ai rencontrée est la suivante :
1. L'encodage de ma connexion à la base de données est GB2312, latin1_swedish_ci
2.php. Le format est UTF-8 et le codage d'affichage du navigateur est : UTF-8
3. Ma page s'affiche de deux manières :
1) Se charge automatiquement lorsque la page est chargée. , chacun rafraîchi chaque seconde
2) En cliquant sur le nom d'un groupe d'extension, obtenez les informations de la carte de membre correspondante du groupe d'extension
4. premier Traitement de cette situation :
Obtenir une session sur la page control.php :
Lire le contenu de la base de données :
ligne 53 :
$grouparr[] = iconv("GB2312","UTF-8",$g[0]); //数据库内容转换为 UTF-8,这样能正常显示页面上的中文
line106 :
$_SESSION['dispatchgroup'] = iconv("UTF-8","GB2312",$grouparr[0]);//将转换的中文修改为 GB2312,用于在 dispatchinfo.php 文件中获得查询的条件值,获得GB2312编码的值。
dispatchinfo.php : ligne 291
if($_SESSION['dispatchgroup']){ $groupaddressinfo = function_listaddressesbygroup($_SESSION['dispatchgroup'],1,$value,0,$_SESSION['dispatchexten'],$_SESSION['dispatchgrouppage']); //2013-5-17$groupaddressinfo = "listaddressesbygrouptype|0|LocalExt|1|12|1,,,801,空闲,,|1,,,802,不在线,,|1,,,803,空闲,,|1,,,804,不在线,,|,,,805,不在线,,|,,,806,不在线,,|,,,807,不在线,,|,,,808,不在线,,|,,,809,不在线,,|,,,810,不在线,,|5,餐厅,,811,10.1.6.189;连接|6,,,812,user2;断开|"; }
Dans ce cas, IE et FF peuvent s'afficher normalement.
5. Pour le deuxième cas :
Cliquez sur le nom du "Groupe d'extensions" pour obtenir le nom chinois du groupe d'extensions cliqué et transmettez-le au fichier dispatchinfo2.php pour traitement via Ajax. .Avant la modification, le nom chinois et l'alerte obtenus après l'événement js click sont tous des valeurs normales [le format est UTF-8]. après le transcodage iconv.
Parce que seulement pour le premier cas, j'utilise la méthode d'encodage de conversion lors du traitement
$groupname = iconv("GB2312","UTF-8",$groupname);
À ce moment, une erreur se produira lors de l'encodage à nouveau,
Solution :
Traitement de soumission asynchrone JS :
checkval(); var ajax = InitAjax(); var url = "dispatchinfo2.php?"+arges; //2013-08-21 limx 中文编码问题 url = encodeURI(encodeURI(url)); ajax.open('GET',url,true);
dispatchinfo2.php
$groupname = urldecode($groupname); $groupname = iconv("utf-8","GB2312",$groupname);
Quatre lignes de code résolvent parfaitement le problème de l'encodage chinois.
Étant donné que les données envoyées par AJAX sont envoyées en codage UTF-8, la conversion de l'encodage doit être effectuée côté serveur (ma page ici est encodée en GB2312, si c'est UTF-8 là ne devrait poser aucun problème avec cette étape), j'ai donc converti UTF-8 en GB2312 côté serveur
Ce qui précède est ce que j'ai compilé pour tout le monde. J'espère que cela sera utile à tout le monde à l'avenir. .
Articles connexes :
Analyse de l'ordre des données renvoyées par requête ajax
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!