Maison > développement back-end > Problème PHP > Que dois-je faire si des caractères tronqués apparaissent lorsque JS lit les cookies chinois définis dans PHP ?

Que dois-je faire si des caractères tronqués apparaissent lorsque JS lit les cookies chinois définis dans PHP ?

coldplay.xixi
Libérer: 2023-03-03 13:48:02
original
2504 Les gens l'ont consulté

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.

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 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);   
}
Copier après la connexion

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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal