关于springmvc的一些问题,在controller中使用HttpServletRequest设置编码为啥无效?
@Controller
public class UserController {
@RequestMapping("/test")
//这里形参有两个String name,HttpServletRequest request
public String login(String name,HttpServletRequest request) throws UnsupportedEncodingException {
System.out.println("name: " + name);
request.setCharacterEncoding("UTF-8"); // 设置utf8编码
String parameter = request.getParameter("name");
System.out.println("parameter: " + parameter);
return "OK";
}
}
结果如下:
请问为什么这样无法解决中文乱码问题?
但是如果接收的参数只有一个HttpServletRequest request的话就可以解决中文乱码如图:
您好,针对你的问题,可以用以下方式试一下:
对于POST请求,Tomcat默认使用ISO-8859-1进行数据流解析,但如果请求体使用的UTF-8进行的编码,编码与解码的字符集不一致导致中文出现乱码。
对于GET请求在URL中携带的参数,Tomcat从8的版本开始默认使用的UTF-8进行的解析,所以无中文乱码问题。如果tomcat是8下的版本,则使用的ISO-8859-1编码,所以会出现乱码问题。
CSDN有一篇文章讲解的不错,链接:http://t.csdn.cn/KpHQ8
希望可以解决你的问题。
可能和你的工具有关系
开发工具可能有问题,改下配置看看
设置编码需要在获取参数之前。如果你使用springmvc框架的话,参数已经被dispatch处理器获取过了,需要在web.xml中配置编码过滤器。如果你使用原生servlet,就要先设置编码,再使用request.getparm获取参数。