程序员

Tomcat 之中文塞入 Cookie 后

实现登录模块时,心血来潮把中文用户名写入了Cookie(学编程,英个类事用习惯了),然后悲剧就发生了!

Console:
java.lang.IllegalArgumentException: Control character in cookie value or attribute
…(省略无用信息若干)

很容易看出问题出在:编码和Cookie的身上!


查询资料得知:
  Tomcat不支持中文cookie,而且在一篇博客中提到“根据RFC 2109中的规定,在Cookie中只能包含ASCII的编码”。
所以解决方案秒出:利用URLEncoder转换编码就OK了~具体操作看下面的示例。


//中文参数塞入Cookie
Cookie user = null;
try { 
    //以‘UTF-8’格式编码
    user = new Cookie("user", URLEncoder.encode(userName, "utf-8"));
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
user.setMaxAge(1*60*60*24*7); //cookie时间设为一星期
response.addCookie(user);
//页面取值
String userName = null;
Cookie[] cookies = request.getCookies();
for(int i=0; cookies!=null&&i

问题解决,长出一口气啊!如果有什么博主没有注意到或错误的地方,欢迎小伙伴评论提出~