>백엔드 개발 >PHP 튜토리얼 >PHP와 JS가 서로 쿠키를 전송할 때 중국어 문자가 왜곡되는 이유와 해결 방법

PHP와 JS가 서로 쿠키를 전송할 때 중국어 문자가 왜곡되는 이유와 해결 방법

零到壹度
零到壹度원래의
2018-04-11 16:59:531994검색

本篇文章给大家分享的内容是php和js互传cookie导致出现中文乱码的原因和解决措施,有着一定的参考价值,有需要的朋友可以参考一下

问题分析:

这是因为文字编码而造成的,汉字是两个编码,所以才会搞出这么个乱码出来!

解决思路:

1:写入Cookie时,先将其用Url编码,然后再写入

2:当我们读取时再Url解码即可

 

php两个函数

urlencode() 

urldecode()

 

js两个函数

decodeURI() 

encodeURI() 

5.5以前的版本是 escape   unescape

 php 设置cookie ,js读取cookie


<?php
setcookie ("TestCookie", urlencode("这就是网页21"));
?>
<script type="text/javascript">
    alert(decodeURI(getCookie("TestCookie")))    
    function getCookie(sName) {    
    var aCookie = document.cookie.split(&#39;; &#39;);    
    for (var i=0; i < aCookie.length; i++) {    
    var aCrumb = aCookie[i].split(&#39;=&#39;);    
    if (sName == aCrumb[0])    
    return decodeURI(aCrumb[1]);
 } return &#39;&#39;;
}
</script>

 js设置cookie php读取cookie

<script type="text/javascript">function setCookie(name, value, time){    
        var nameString = name + &#39;=&#39; + encodeURI(value);    
        var expiryString = "";    
        if(time !== 0) {    
            var expdate = new Date();        
            if(time == null || isNaN(time)) time = 60*60*1000;
        expdate.setTime(expdate.getTime() +  time);
     expiryString = &#39; ;expires = &#39;+ expdate.toGMTString();
 } 
 var path = " ;path =/";
 document.cookie = nameString + expiryString + path;
}setCookie("TestJsCookie", "我是中国人", 0)  </script>


<?php
echo urldecode($_COOKIE["TestJsCookie"]);
?>

위 내용은 PHP와 JS가 서로 쿠키를 전송할 때 중국어 문자가 왜곡되는 이유와 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.