资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

如何解决JS读取PHP中设置的中文cookie时出现乱码的问题

这期内容当中小编将会给大家带来有关如何解决JS读取PHP中设置的中文cookie时出现乱码的问题,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

淮阳网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司于2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司

JS读取PHP中设置的中文cookie时出现乱码的解决方法:1、在PHP中先用escape函数编码,到客户端时利用js中的unescape解码;2、使用【setrawcookie()】函数来代替cookie值。

JS读取PHP中设置的中文cookie时出现乱码的解决方法:

在PHP中先用escape函数编码,到客户端时利用js中的unescape解码。

escape函数如下:

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

例子:test.php

$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);
?>

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


document.write("js:" + unescape(getCookie("name")));

另外还有一个方法:

在PHP5中,可以使用setrawcookie()函数来代替,它是在设置cookie值的时候没有编码的,所以在设置cookie的时候也不用先用escape函数编码,这时JS也能直接读取cookie的值

上述就是小编为大家分享的如何解决JS读取PHP中设置的中文cookie时出现乱码的问题了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


分享文章:如何解决JS读取PHP中设置的中文cookie时出现乱码的问题
网站地址:http://cdkjz.cn/article/pdogdh.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220