第一种:请求数据与页面编码不一致
中文乱码的原因:
请求参数的文字编码方式与页面中的不一致所造成,所有的request请求都是ISO-8859-1的,而如果在此页面采用UTF-8的编码方式,就需要将获取到的数据通过String的构造方法使用指定的编码类型重新构造一个String对象,即可正确地显示中文信息。
例如:
<body>
<a href=”show.jsp?name=张三&sex=男”>解决中文乱码</a>
</body>
则:
<body>
<!—采用了中文乱码处理-->
name参数的值为:<%=new String(request.getParameter(“name”).
getBytes(“ISO-8859-1”),”UTF-8”)%>
<!—未采用了中文乱码处理-->
sex的参数为:<%=request.getParameter(“sex”)%>
</body>
第二种 请求的数据经过Web容器处理
乱码来源:Web容器使用的是ISO-8859-1的编码格式,所以在Web应用的业务处理中也会使用ISO-8859-1的编码格式。因此虽然浏览器提交的请求使用的是中文编码格式UTF-8,但经过业务处理中的ISO-8859-1编码,仍然会出现中文乱码现象。
解决方法:字符编码过滤器(即在业务处理中重新指定中文字符集进行编码)
例如:
request.setCharacterEncoding(encoding); //设置请求的编码
response.setContentType(“text/html;charset=”+encoding); //设置response字符编码