码迷,mamicode.com
首页 > Windows程序 > 详细

C# .net中cookie值为中文时的乱码解决方法

时间:2018-10-23 14:32:04      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:new   tco   获取   []   nmap   attribute   方法   str   修改   

在学习当中碰到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);
    }
  }
}

 

   这样问题就解决了。

C# .net中cookie值为中文时的乱码解决方法

标签:new   tco   获取   []   nmap   attribute   方法   str   修改   

原文地址:https://www.cnblogs.com/zgjin/p/9835738.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!