php Cookie が文字化けする場合の解決策: まず、Cookie を書き込むときに URL でエンコードし、次に Cookie を書き換え、最後に読み取り時に URL をデコードします。
この記事の動作環境:Windows7システム、PHP7.1バージョン、DELL G3パソコン
phpと転送時のjs中国語でCookieを相互に送信する 文字化けの問題
jsにはCookieが保存されており、PHPがそれを読み込むと文字化けしてしまいます。
問題分析:
これは文字エンコーディングが原因です。中国語の文字には 2 つのエンコーディングがあるため、このような文字化けコードが生成されます。
解決策:
1: Cookie を書くときは、まず URL でエンコードしてから書き込みます
2: 読み取るときに、URL をデコードします。
#php 2 つの関数urlencode() urldecode() js 2 つの関数 decodeURI() encodeURI() 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('; '); for (var i=0; i < aCookie.length; i++) { var aCrumb = aCookie[i].split('='); if (sName == aCrumb[0]) return decodeURI(aCrumb[1]); } return ''; } </script>js は cookie を設定します PHP は cookie を読み取ります
<script type="text/javascript">function setCookie(name, value, time){ var nameString = name + '=' + 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 = ' ;expires = '+ expdate.toGMTString(); } var path = " ;path =/"; document.cookie = nameString + expiryString + path; }setCookie("TestJsCookie", "我是中国人", 0) </script>
<?php echo urldecode($_COOKIE["TestJsCookie"]); ?>推奨学習: 「
PHP ビデオ チュートリアル 」
以上がPHPのCookieの文字化け問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。