Servlet中文乱码 Tomcat8
问题:
Servlet中Get和Post获取到的中文参数都变成了乱码
代码:
JSP:
<meta charset="UTF-8">
<html>
<body>
<h2>Hello World!</h2>
<form action="/login" method="post">
username:<input type="text" name="username"><br/>
pwd:<input type="password" name="pwd"><br/>
<input type="submit" value="login" />
</form>
</body>
</html>
Servlet:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
System.out.println(username + " " + pwd);
}
截图:
尝试方法:
如图 request使用setCharacterEncoding设置为了UTF-8 并且当前页面编码也是UT-8 JSP文件也加入了UTF-8的编码声明 环境用的是Tomcat8
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
修改下conf下server
很尴尬.... 浏览器默认采用了ASCII进行解码, 调整浏览器解码方式为UTF-8即可
检查一下编码
java文件,jsp文件编码方式最好都统一使用UTF-8编码。
对于post请求
设置request .setCharacterEncoding(“UTF-8”),这样中文才不会有乱码!
你可以统一写一个过滤器设置一下,如果使用spring-mvc的话 可以在web.xml中配置
对于get请求
如果你的请求是get,参数有中文的,比如 ?name=张上,按照如下处理
前端encodeURIComponent(encodeURIComponent(url)),对url进行二次编码。
后端:拿到参数值,使用URLDecoder.decode(s, "UTF-8")解码一下。这样方式确实可行的,答主在实际项目总使用过。
举个例子吧:
前端:
后端:
注意:get请求有中文参数,可以指定容器使用何种编码规则来解码提交的参数(有人回答使用这种方式,即修改tomcat 配置文件中的Connector中的URIEncoding参数),但是这种做法不建议使用,推荐使用二次编码吧。
为什么需要二次编码?可以看如下博文:
eURIComponent编码2次