JSP乱码详解,初学者容易出现这种错误,按下面顺检查,99%可以解决乱码问题,直接看下面,你懂的。
1 检查编译平台 , 一般使用 Myeclipse平台,打开菜单的
window -- >preferences--> Myeclipse --> workspace --> encoding
默认ISO8959-1 , 更改成UTF-8,如果没有这个选项,可以直接写上。
这个最好在新建项目前检查,如果现有项目想改变编码,直接在项目名上右键 -->properies-->info ,
修改text file encoding ---->other---> UTF-8
2 JSP 页面显示, 必须设置编码
<@ page pageEncoding="UTF-8"%>
3 servlet / JSP 中取参数之前,必须设置
request.setCharacterEncoding("UTF-8");
requst.getParameter("xxxx");
4 servlet 响应客户端之前,也必须设置
request.setContextType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8")
out.println(" 成功 ");
< 以上3、4两种情况可以使用过滤器解决,比较方便彻底, 否则每个Servlet中都必须设置请求和响应编码 >
5 数据库乱码,读取数据或保存数据时 乱码
一般 在数据库连接的的 url后 加上 charset=UTF-8
6 get提交的数据中如果有中文一般99%的情况都有乱码,而且设置过滤器过滤无效 , 设置请求编码也是无效的。
一般是在浏览器地址栏中使用了中文,或者在链接的href后挂参数使用了中文,或者在表单中使用method=get 提交时,提交了中文 都会导致乱码。
特别是表单提交,很多人都会忘记,<form action=" " ></form> 如果没有使用method属性,默认是get提交
终极解决方案就是修改 <tomcat_home>/conf/server.xml 中的配置,
添加属性 URIEncoding="UTF-8" 到??? 处
<Connector port="8088" protocol="HTTP/1.1" connectionTimeout="20000" ??? redirectPort="8443" />