前提:HttpServletRequest request
/**
*post提交参数
*/
request.setCharacterEncoding("utf-8");
/**
* 对get提交参数处理
*/
// 1)得到原来的参数
String value = request.getParameter(name); // iso-8859-1
// 2)手动解码
if ("GET".equals(request.getMethod())) {
value = new String(value.getBytes("iso-8859-1"), "utf-8");
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
之前自己看视频学习根本没有听懂,只是现拿现用,时间一长就没有一点印象。
现在(2018/8/13)在达内培训时,再次遇到乱码问题,(前天)开始没细想,后来(今天)想了想前两次基本上差不多,都让自己敷衍过去了,所幸现在自己琢磨了点,多多少少比之前理解的透彻了。(以下为copy的笔记)
**请求参数中的乱码问题 -- 编码时和解码时使用码表不一致造成的
* 浏览器使用什么码表打开当前页面, 就使用什么码表来发送请求参数. 因此我们可以通过控制浏览器打开页面时使用的码表, 而间接控制浏览器发送数据使用的码表
* tomcat服务器默认使用的是ISO8859-1码表来处理浏览器发送过来的数据, 而这个码表中没有中文汉字, 所以处理中文这是必然会造成乱码
* request.setCharacterEncoding("utf-8"); 这个方法可以指定服务器使用什么码表来处理请求, 从而解决乱码问题 但是必须注意把这行代码写在获取任何参数的代码之前
* request.setCharacterEncoding("utf-8");这个方法是用来通知服务器使用什么编码来处理请求实体内容中的数据, POST提交的参数刚好在请求实体内容中, 所以这个方法可以处理POST提交的乱码问题.
而GET提交发送的数据是在请求行的请求资源路径后面, 所以这个方法不起作用
那如何解决GET提交的乱码问题呢? -- 根据乱码产生的原理, 可以手动的编解码来解决乱码问题
username = new String(username.getBytes("iso-8859-1"), "utf-8");