tomcat8版本之前,get和post请求的中文都会出现乱码的现象,升级到8版本之后对对get请求的乱码做了处理,但是post请求的中文依然会出现乱码。
一、post乱码的分析
post请求乱码产生的原因以及解决方案:
二、第一种解决方案
逆向编码和解码:
[Java]
纯文本查看
复制代码
01 02 03 04 05 06 07 08 09 10 11 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取用户输入的用户名 String username = request.getParameter( "username" ); System.out.println( "乱码处理前:" +username); //使用ISO-8859-1进行编码 username = URLEncoder.encode(username, "ISO-8859-1" ); //使用UTF-8进行解码 username = URLDecoder.decode(username, "UTF-8" ); System.out.println( "乱码处理后:" +username); } |
测试打印结果:
乱码处理前:??????
乱码处理后:张三
二、第二种解决方案
在所有获取数据之前设置请求体的编码:
[Java]
纯文本查看
复制代码
1 2 3 4 5 6 7 8 9 | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //处理post请求的乱码问题 request.setCharacterEncoding( "UTF-8" ); //获取用户输入的用户名 String username = request.getParameter( "username" ); System.out.println( "username:" +username); } |
测试结果:
username:张三
小结:
第一解决方案有助于我们理解乱码产生的原因,解决起来稍微显得麻烦
第二种解决方案,代码量小,推荐使用
更多技术资讯可扫描以下二维码获取