Cookie 中文500问题![在这里插入图片描述](https://img-blog.csdnimg.cn/20200416104941529.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2pzanM3OTg5NDkxMzY=,size_16,color_FFFFFF,t_70#pic_center)
HTTP Status 500 - Control character in cookie value or attribute.
原因是Cookie中文导致的
Cookie abc =new Cookie("yzj","渣渣辉");
// Cookie abc = new Cookie("yzj", URLEncoder.encode("渣渣辉","UTF-8"));
response.addCookie(abc);
将代码换成注释的下面一行则OK,当然在获取cookie值后需要解码
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
System.out.println(cookie.getName()+":"+ URLDecoder.decode(cookie.getValue(), "UTF-8"));
}
}
request get方式乱码问题
相信不少小伙伴困惑这个问题应为tomcat7是采用ISO-8859-1进行解码的我们将他改为utf-8即可
String account = new String(request.getParameter("account").getBytes("ISO-8859-1"),"UTF-8");
当然这种方式并不好 每一个中文都要进行更改,采用
Map<String, String[]> map = request.getParameterMap();
BeanUtils.populate(loginUser,map);
这种方式封装就会出现一定问题 ,这时候我们可以找到tomcat conf目录下的server.xml文件 ,找到下图地方加上 URIEncoding=“UTF-8”(加在 ’ / ’ 前)
保存,重启服务器 在次输入张三疯
request post方式乱码问题
该问题直接设置编码格式
request.setCharacterEncoding("utf-8");