静态控制
1,在JSP头部声明:
<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8" %>
2,在Jsp的html代码中,声明UTF-8:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
3,设定数据库连接方式是UTF-8。例如连接MYSQL时配置URL如下:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8
动态控制
将所有来自浏览器的请求(request)转换为utf-8,因为浏览器发过来的请求包根据浏览器所在的操作系统编码,可能是各种形式编码。关键一句:
request.setCharacterEncoding("utf-8")
*需要注意的是:以上这种方式只对post方式传值有效,对get方式无效。
使用get方式传值时的临时解决方案
String strDisplay = new String(strParm.getBytes("ISO8859-1"), "utf-8");
使用get方式传值时的完整解决方案——服务器方面的修改
在tomcat根目录中找到conf目录,在server.xml中找到<Connector>结点,做如下修改:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8" />
加上红字部分,这样就可以完全解决get方式传值时的乱码问题。但是由于这样的方案是对服务器本身设置的修改,所以会影响其它程序的运行。