JavaWeb应用中完整的乱码解决方案(原创)

静态控制
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方式传值时的乱码问题。但是由于这样的方案是对服务器本身设置的修改,所以会影响其它程序的运行。





你可能感兴趣的:(java,jsp,应用服务器,mysql,浏览器)