首頁 >後端開發 >php教程 >php和js互傳cookie導致出現中文亂碼的原因和解決措施

php和js互傳cookie導致出現中文亂碼的原因和解決措施

零到壹度
零到壹度原創
2018-04-11 16:59:531996瀏覽

這篇文章給大家分享的內容是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互傳cookie導致出現中文亂碼的原因和解決措施的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn