Heim >Backend-Entwicklung >PHP-Problem >Was soll ich tun, wenn verstümmelte Zeichen erscheinen, wenn JS die in PHP gesetzten chinesischen Cookies liest?

Was soll ich tun, wenn verstümmelte Zeichen erscheinen, wenn JS die in PHP gesetzten chinesischen Cookies liest?

coldplay.xixi
coldplay.xixiOriginal
2020-07-29 15:29:262495Durchsuche

Lösung für den verstümmelten Code, wenn JS das in PHP festgelegte chinesische Cookie liest: 1. Verwenden Sie zuerst die Escape-Funktion zum Codieren in PHP und verwenden Sie die Unescape-Decodierung in js, wenn Sie den Client erreichen. 2. Verwenden Sie [setrawcookie ( )]-Funktion zum Ersetzen des Cookie-Werts.

Was soll ich tun, wenn verstümmelte Zeichen erscheinen, wenn JS die in PHP gesetzten chinesischen Cookies liest?

Lösung für den verstümmelten Code, wenn JS die in PHP gesetzten chinesischen Cookies liest:

In PHP zuerst verwenden Escape-Funktion zum Codieren und Unescape-Decodierung in js verwenden, wenn der Client erreicht wird.

Escape-Funktion lautet wie folgt:

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);   
}

Beispiel: 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>

Es gibt auch eine andere Methode:

In PHP5 können Sie Die Funktion wird beim Festlegen des Cookie-Werts nicht codiert, daher ist es nicht erforderlich, sie beim Setzen des Cookies mit der Escape-Funktion zu codieren. Zu diesem Zeitpunkt kann JS den Cookie-Wert auch direkt lesen setrawcookie()

Verwandte Lernempfehlungen:

PHP-Programmierung vom Anfänger bis zum Experten

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn verstümmelte Zeichen erscheinen, wenn JS die in PHP gesetzten chinesischen Cookies liest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn