Cookie报错: An invalid character [32] was present in the Cookie value

一、遇到的问题

Cookie报错:

An invalid character [32] was present in the Cookie value

原因:

  1. 格式化输出日期时报错: yyyy年MM月dd日 HH:mm:ss
  2. Tomecat8之后, 虽然支持中文输出, 但是对于一些特殊字符还是不支持, [32]表示空格

二、 解决方法:

1. 在输出之前, 使用`URLEncoder`进行编码 
    + `dateString = URLEncoder.encode(dateString, "utf-8");`
2. 对于编码的数据, 如果要从浏览器中获取到服务端, 要对其进行解码
    + `String dateString = URLDecoder.decode(cookie.getValue(), "utf-8");`

示例:

//创建Cookie
Cookie cookie = new Cookie(URLEncoder.encode("姓名","utf-8"),URLEncoder.encode("小明","utf-8"));
response.addCookie(cookie);
//该格式的时间有空格
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
String loginTime = sdf.format(date);
//使用下面的方式即可解决
cookie = new Cookie("loginTime",URLEncoder.encode(loginTime,"utf-8"));
response.addCookie(cookie);
out.println("Cookie已经存在浏览器中");

你可能感兴趣的:(Java,eclipse,java,tomcat)