Cookie中存中文报错

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();
              }
           }  
       }
}

 

你可能感兴趣的:(java,cookie)