[转]JS Cookie 中文乱码

首先是一个解析cookie的函数:

 <script type="text/javascript">
 function getCookie(name) {
   var cookies = document.cookie.split(";");
   for(var i=0;i<cookies.length;i++) {
    var cookie = cookies[i];
    var cookieStr = cookie.split("=");
    if(cookieStr && cookieStr[0].trim()==name) {
     return  decodeURI(cookieStr[1]);
    }
   }
 }
 
 String.prototype.trim = function() {
  return this.replace(/^(\s*)|(\s*)$/g,"");
 }
 </script>

 

当获取到内容的时候,一定要进行编码,否则会出现中文乱码问题。

decodeURI

其中在java的Servlet中,中文也要进行转码。cookie中不允许直接存储中文:

  String  valueUTF8 = URLEncoder.encode("testvalue3_中文_UTF-8","UTF-8");
  Cookie cookie3 = new Cookie("testUTF8",valueUTF8);

  response.addCookie(cookie3);

并且在encode编码的时候,用UTF-8来编码。这样js通过decodeURI转码过来的就不是乱码。

因为decodeURI就是采用的UTF-8来编码的。

posted @ 2013-09-12 17:19  Seasons1987  阅读(7657)  评论(0编辑  收藏  举报