Cookie中存中文报错_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Cookie中存中文报错

Cookie中存中文报错

 2014/10/29 19:28:54  黑夜星空哈  程序员俱乐部  我要评论(0)
  • 摘要:Cookie中存中文报错:Controlcharacterincookievalue,considerBASE64encodingyourvalue功能需求:当用户登录时,将用户的用户名、密码保存到本地的Cookie中,下次登录时,直接获取之前的cookie,从而不需要输入。之前测试一直没问题,今天当创建一个中文用户,登录时报错,报错代码(Stringusername=“登录名2”;)CookieusernameCookie=newCookie(“username”,username)
  • 标签:Cookie

class="MsoNormal">Cookie中存中文报错:Control character in cookie value, consider BASE64 encoding your value

?

功能需求:当用户登录时,将用户的用户名、密码保存到本地的Cookie中,下次登录时,直接获取之前的cookie,从而不需要输入。

之前测试一直没问题,今天当创建一个中文用户,登录时报错,报错代码

(String username = “登录名2” ;)
Cookie usernameCookie = new Cookie(“username”, username);
usernameCookie.setMaxAge(timeout);
 
response.addCookie(usernameCookie);  //(断点调试发现是这句话报错)

?

?

后来查找才知道是转码的问题

Cookie只支持ASCII字符,而且不能有逗号、分号和空白。

?

储存中文解决方案,

存入时用URLEncoder.encode()转码

Cookie usernameCookie = new Cookie(“username”,URLEncoder.encode(username, "UTF-8"));
usernameCookie.setMaxAge(timeout);
response.addCookie(usernameCookie);

?

取出时用URLDecoder.decode()解码

Cookie[] cookies = request.getCookies();
if (cookies != null) {
       for (Cookie tc : cookies) {
           if (tc.getName().equals(“username”)) {
    //            username = tc.getValue();
              try {
                  username = URLDecoder.decode(tc.getValue(),"UTF-8");
              } catch (UnsupportedEncodingException e) {
                  e.printStackTrace();
              }
           }  
       }
}

?

发表评论
用户名: 匿名