JS讀取PHP中設定的中文cookie時出現亂碼怎麼辦

coldplay.xixi
發布: 2023-03-03 13:48:02
原創
2314 人瀏覽過

JS讀取PHP中設定的中文cookie時出現亂碼的解決方法:1、在PHP中先用escape函式編碼,到客戶端時利用js中的unescape解碼;2、使用【setrawcookie( )】函數來代替cookie值。

JS讀取PHP中設定的中文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的值

相關學習推薦:PHP程式設計從入門到精通

以上是JS讀取PHP中設定的中文cookie時出現亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!