JS读取PHP中设置的中文cookie时出现乱码怎么办

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]    =    "t;.bin2hex(iconv("GB2312","UCS-2",$v));   
       }   
       return    join("",$ar);   
}

例子: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]    =    "t;.bin2hex(iconv("GB2312","UCS-2",$v));   
   }   
   return    join("",$ar);   
}
$name = escape("深圳人");
setcookie("name", $name);
?>
<scrīt>
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īt>
<scrīt>
document.write("js:"   unescape(getCookie("name")));
</scrīt>

另外还有一个方法:

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

相关学习推荐:PHP编程从入门到精通

更多关于云服务器域名注册虚拟主机的问题,请访问西部数码官网:www.west.cn

赞(0)
声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-62778877-8306;邮箱:fanjiao@west.cn。本站原创内容未经允许不得转载,或转载时需注明出处:西部数码知识库 » JS读取PHP中设置的中文cookie时出现乱码怎么办

登录

找回密码

注册