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] = "%u".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] = "%u".bin2hex(iconv("GB2312","UCS-2",$v)); } return join("",$ar); } $name = escape("深圳人"); setcookie("name", $name); ?> <scrīpt> 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īpt> <scrīpt> document.write("js:" + unescape(getCookie("name"))); </scrīpt>
另外還有一個方法:
在PHP5中,可以使用setrawcookie()
函數來代替,它是在設定cookie值的時候沒有編碼的,所以在設定cookie的時候也不用先用escape函數編碼,這時JS也能直接讀取Cookie的值
相關學習推薦:PHP程式設計從入門到精通
以上是JS讀取PHP中設定的中文cookie時出現亂碼怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!