Maison > Article > développement back-end > Que dois-je faire si des caractères tronqués apparaissent lorsque JS lit les cookies chinois définis dans PHP ?
Solution au code tronqué lorsque JS lit le cookie chinois défini en PHP : 1. Utilisez d'abord la fonction d'échappement pour encoder en PHP, et utilisez le décodage unescape dans js lorsque vous atteignez le client ; ( )] fonction pour remplacer la valeur du cookie.
Solution au code tronqué lorsque JS lit les cookies chinois définis en PHP :
En PHP utilisez d'abord le fonction d'échappement pour encoder et utiliser le décodage sans échappement dans js lorsque vous atteignez le client.
la fonction d'échappement est la suivante :
function escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v)); } return join("",$ar); }
Exemple : test.php
<?php function escape($str) { preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$r); $ar = $r[0]; foreach($ar as $k=>$v) { if(ord($v[0]) < 128) $ar[$k] = rawurlencode($v); else $ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v)); } return join("",$ar); } $name = escape("深圳人"); setcookie("name", $name); ?> <scrīpt> function get_cookie(name) { var result = null; var myCookie = document.cookie + ";"; var searchName = name + "="; var startOfCookie = myCookie.indexOf(searchName); var endOfCookie; if (startOfCookie != -1) { startOfCookie += searchName.length; endOfCookie = myCookie.indexOf(";",startOfCookie); result = unescape(myCookie.substring(startOfCookie, endOfCookie)); } return result; } </scrīpt> <scrīpt> document.write("js:" + unescape(getCookie("name"))); </scrīpt>
Il existe également une autre méthode :
En PHP5, vous pouvez utiliser setrawcookie()
Fonction à la place, elle n'est pas codée lors de la définition de la valeur du cookie, il n'est donc pas nécessaire de l'encoder avec la fonction d'échappement lors de la définition du cookie. À ce moment, JS peut également lire directement la valeur du cookie
.Recommandations d'apprentissage associées : Programmation PHP du débutant au compétent
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!