Cookie中文存储页面500问题
前段時(shí)間做cookie存儲(chǔ),直接用的菜鳥(niǎo)教程中的cookie設(shè)置方法,方法如下:
function setCookie(cname,cvalue,exdays) {var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = cname + "=" + cvalue + ";" + expires+"; path=/"; }以上的函數(shù)參數(shù)中,cookie 的名稱為 cname,cookie 的值為 cvalue,并設(shè)置了 cookie 的過(guò)期時(shí)間 expires。
該函數(shù)設(shè)置了 cookie 名、cookie 值、cookie過(guò)期時(shí)間。
當(dāng)用上面的cookie存儲(chǔ)方法存儲(chǔ)中文數(shù)據(jù)后,刷新頁(yè)面發(fā)現(xiàn)頁(yè)面報(bào)錯(cuò),如下:
?
cookie中存儲(chǔ)內(nèi)容中有中文:
所有我們需要先對(duì)要存儲(chǔ)的內(nèi)容進(jìn)行編碼,然后再存儲(chǔ),這樣才不會(huì)報(bào)錯(cuò),下面用的encodeURI()函數(shù)做的編碼。
function setCookie(cname,cvalue,exdays) {var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = encodeURI(cname) + "=" + encodeURI(cvalue) + ";" + expires+"; path=/"; }這樣做存儲(chǔ),就可以解決cookie中文存儲(chǔ)的問(wèn)題了,然后注意的就是在獲取cookie的時(shí)候,需要對(duì)數(shù)據(jù)進(jìn)行decodeURI()解碼,完整的demo:
<script type="text/javascript">function setCookie(cname,cvalue,exdays){var d = new Date();d.setTime(d.getTime()+(exdays*24*60*60*1000));var expires = "expires="+d.toGMTString();document.cookie = encodeURI(cname) + "=" + encodeURI(cvalue) + ";" + expires+"; path=/";}function getCookie(cname){var name = encodeURI(cname) + "=";var ca = document.cookie.split(';');for(var i=0; i<ca.length; i++){var c = ca[i].trim();if (c.indexOf(name)==0) return decodeURI(c.substring(name.length,c.length));}return "";}function alertCookie(){alert(getCookie('name'));} </script> <span onclick="setCookie('name','我',1);">設(shè)置cookie</span> <span onclick="alertCookie();">獲取cookie</span>?
轉(zhuǎn)載于:https://www.cnblogs.com/xgytbht/p/7472971.html
總結(jié)
以上是生活随笔為你收集整理的Cookie中文存储页面500问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: RocketMQ多Master多Slav
- 下一篇: VS2013编译OBS源码