Tomcat后台中文乱码分析
2016-12-27 00:00
417 查看
web应用程序在提交中文数据的时候,后台经常出现乱码现象。为了彻底分析产生原因,做了一个简单测试:
创建一个简单的java web应用程序,没有使用任何框架,部署在tomcat环境中。
使用谷歌和ie浏览器分别进行测试,测试结果如下:
从上面的测试结果看出:
1.如果是GET请求,应在tomcat的server.xml中设置 URLEncoding="UTF-8" 。
2.如果是POST请求,请在后台设置 httpServletRequest.setCharacterEncoding("utf-8"); 或通过使用MVC框架并设置字符编码参数来解决乱码问题。
以下是测试页面代码:
创建一个简单的java web应用程序,没有使用任何框架,部署在tomcat环境中。
使用谷歌和ie浏览器分别进行测试,测试结果如下:
Browser | Method | Tomcat URIEncoding | httpServletRequest | System.out |
Chrome | GET | - | - | (乱码) |
Chrome | GET | - | setCharacterEncoding("gb2312") | (乱码) |
Chrome | GET | - | setCharacterEncoding("utf-8") | (乱码) |
Chrome | GET | URIEncoding="gb2312" | - | (乱码) |
Chrome | GET | URIEncoding="gb2312" | setCharacterEncoding("gb2312") | (乱码) |
Chrome | GET | URIEncoding="gb2312" | setCharacterEncoding("utf-8") | (乱码) |
Chrome | GET | URIEncoding="utf-8" | - | 中文正常显示 |
Chrome | GET | URIEncoding="utf-8" | setCharacterEncoding("gb2312") | 中文正常显示 |
Chrome | GET | URIEncoding="utf-8" | setCharacterEncoding("utf-8") | 中文正常显示 |
Chrome | POST | - | - | (乱码) |
Chrome | POST | - | setCharacterEncoding("gb2312") | (乱码) |
Chrome | POST | - | setCharacterEncoding("utf-8") | 中文正常显示 |
Chrome | POST | URIEncoding="gb2312" | - | (乱码) |
Chrome | POST | URIEncoding="gb2312" | setCharacterEncoding("gb2312") | (乱码) |
Chrome | POST | URIEncoding="gb2312" | setCharacterEncoding("utf-8") | 中文正常显示 |
Chrome | POST | URIEncoding="utf-8" | - | (乱码) |
Chrome | POST | URIEncoding="utf-8" | setCharacterEncoding("gb2312") | (乱码) |
Chrome | POST | URIEncoding="utf-8" | setCharacterEncoding("utf-8") | 中文正常显示 |
IE11 | GET | - | - | (乱码) |
IE11 | GET | - | setCharacterEncoding("gb2312") | (乱码) |
IE11 | GET | - | setCharacterEncoding("utf-8") | (乱码) |
IE11 | GET | URIEncoding="gb2312" | - | (乱码) |
IE11 | GET | URIEncoding="gb2312" | setCharacterEncoding("gb2312") | (乱码) |
IE11 | GET | URIEncoding="gb2312" | setCharacterEncoding("utf-8") | (乱码) |
IE11 | GET | URIEncoding="utf-8" | - | 中文正常显示 |
IE11 | GET | URIEncoding="utf-8" | setCharacterEncoding("gb2312") | 中文正常显示 |
IE11 | GET | URIEncoding="utf-8" | setCharacterEncoding("utf-8") | 中文正常显示 |
IE11 | POST | - | - | (乱码) |
IE11 | POST | - | setCharacterEncoding("gb2312") | (乱码) |
IE11 | POST | - | setCharacterEncoding("utf-8") | 中文正常显示 |
IE11 | POST | URIEncoding="gb2312" | - | (乱码) |
IE11 | POST | URIEncoding="gb2312" | setCharacterEncoding("gb2312") | (乱码) |
IE11 | POST | URIEncoding="gb2312" | setCharacterEncoding("utf-8") | 中文正常显示 |
IE11 | POST | URIEncoding="utf-8" | - | (乱码) |
IE11 | POST | URIEncoding="utf-8" | setCharacterEncoding("gb2312") | (乱码) |
IE11 | POST | URIEncoding="utf-8" | setCharacterEncoding("utf-8") | 中文正常显示 |
1.如果是GET请求,应在tomcat的server.xml中设置 URLEncoding="UTF-8" 。
2.如果是POST请求,请在后台设置 httpServletRequest.setCharacterEncoding("utf-8"); 或通过使用MVC框架并设置字符编码参数来解决乱码问题。
以下是测试页面代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>字符编码测试</title> </head> <body> <form name="posttest" action="/posttest" method="post"> 提交测试(POST): <input type="text" name="user" value="中文正常显示" /> <input type="submit" value="Submit" /> </form> <br /> <a href="/gettest?user=中文正常显示">请点击这里进行GET测试</a> </body> </html>
相关文章推荐
- Tomcat下前端使用vue-resource向后台servlet发送数据中文乱码
- Tomcat载入js文件时中文乱码,后台传值都正常
- 给tomcat设置URIEncoding避免页面提交到后台的中文字符乱码
- android中文参数传到java tomcat后台变成乱码
- Tomcat源码分析之中文乱码(一)
- jsp向后台传中文,tomcat和weblogic下中文乱码解决方法
- 【技术贴】servlet传参|前台传参含中文符号等 tomcat乱码 java后台接收乱码终极解决方
- Tomcat源码分析之中文乱码(一)
- 【技术贴】servlet传参|前台传参含中文符号等 tomcat乱码 java后台接收乱码终极解决方
- 从Tomcat源码分析中文乱码问题
- jsp向后台传中文,tomcat和weblogic下中文乱码解决方法
- tomcat乱码,tomcat中文乱码 前台到后台,传参中文乱码问题 中文从前台传递到后台,接受后是乱码,
- Tomcat及MySQL中文乱码问题解决方案总览
- Tomcat 中 jsp 中文乱码显示处理解决方案
- ajax中文乱码原因分析及解决方案
- tomcat下htm中文页面乱码问题的解决
- JSP中文乱码解决方案-Tomcat5.0版
- Tomcat中文乱码问题的原理和解决方法
- zz:Tomcat的中文乱码的经典解决方案
- 解决tomcat下中文乱码问题