1.调用JSP页面出现乱码:
- 通过浏览器调用JSP页面,在浏览器中显示中文内容出现乱码。
- 首先确认JSP文件在编辑器中保存为“UTF-8”,然后在JSP页面中添加“<%@ pageEncoding="UTF-8" %>”即可解决中文乱码问题。
2.调用Servlet页面显示乱码
- 通过浏览器调用Servlet,Servlet中通过PrintWriter输出地中文出现乱码。
- 在Servlet使用response对象输出之前,先执行“response.setContentType("text/html;charset=utf-8")”
3.POST表单传递中文参数乱码
- 通过JSP页面、HTML页面或者Servlet中的表单元素提交参数给对应的JSP页面或者Servlet,接收者接收的中文参数值乱码。
- 在接收POST提交的参数之前,使用“request.setCharacterEncoding("utf-8")”设定接收参数的内容使用utf-8编码
- 更好的解决方法:使用过滤器技术。
4.URI方式传递参数乱码(就是在URL后面添加参数:http://localhost:8082/app/encode.do?name=靓仔)。
- 使用表单传递参数,可以通过POST或者GET方式。不使用表单,还可以使用链接方式传递参数,这种传递参数的方法本质上是GET方式传递参数,这种传递参数的值是中文,也会出现乱码(即使是使用了第3点解决乱码的方法),
- 有一个解决方法:修改tomcat配置文件:进入“/conf/server.xml”文件,将以下配置修改(此方法不推荐,因为移植性相当差)
<Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
修改后配置:<Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
- 在发送参数前对参数进行urlEncode,接收时使用java.net.URLDecoder.decode(String, "utf-8")
5.Properties文件乱码
- 在使用一些类库或者框架时(例如:JSTL Format标记库、Displaytag标记库和Struts框架),为了实现页面内容的国际化,需要编写对应的Properties文件,而Properties文件中的中文内容在显示的时候也会出现乱码。
- 使用Eclipse插件“Properties Editor”:http://propedit.sourceforge/