C# .net中cookie值為中文時的亂碼解決方法


在學習當中碰到cookie中文亂碼問題,問題原因:cookie對中文不太支持,將中文放入cookie中會報錯誤。

   解決辦法:

      1.編碼

        將中文進行編碼再放入cookie中:

        String username1 = URLEncoder.encode(username, "utf-8");

        String userpwd1 = URLEncoder.encode(userpwd, "utf-8");

        其中username和userpwd其中有中文,username1和userpwd1是進行編碼之后的字符串。

        比如:(我這里做的是三天免登陸)

        Cookie loginCookie = new Cookie("loginCookie",username1+":"+userpwd1);

        //將編碼后的內容放到Cookie中

        loginCookie.setMaxAge(24*3600);

        //設置loginCookie的有效期3天 24小時*60分鍾*60秒

        resp.addCookie(loginCookie);

         //將loginCookie響應到瀏覽器

      2.解碼(如果不進行解碼,頁面會獲取的是base64編碼后的內容)

        String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8"); 

        其中cookies[i].getValue()是要進行解碼的內容,根據自己的情況進行修改。

        我的代碼:

//創建存放用戶名密碼的map
Map<String,String> loginMap = new HashMap<String,String>();

//獲取cookies
Cookie[] cookies = req.getCookies();
//進行判斷
if(cookies!=null) {
  for(int i=0;i<cookies.length;i++) {
    if(cookies[i].getName().equals("loginCookie")) {
      String unamePwd = URLDecoder.decode(cookies[i].getValue(),"utf-8");
      String[] up = unamePwd.split(":");
      loginMap.put(up[0], up[1]);
      req.getSession().setAttribute("loginMap",loginMap);
    }
  }
}

 

   這樣問題就解決了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM