中文乱码一般是在URL后面加参数的情况下会发生,如果用表单提交则不会乱码。
首先JSP页面保证编码一致,添加以下两行代码:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
Tomcat下的两种解决方案:
1、在Tomcat Server.xml中加
URIEncoding="GBK"
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK" />
2、在Action转换
name=new String(name.getBytes("ISO-8859-1"),"GBK");
Weblogic下的两种解决方案:
1、在WEB.xml中配置(
这种情况必须用startWeblogic.cmd启动才有效)
<context-param>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
<param-name>weblogic.httpd.inputCharset./*</param-name>
<param-value>GBK</param-value>
</context-param>
2、JSP页面和Action转换
var name=encodeURI("乱码测试");
name= java.net.URLDecoder.decode(name,"GBK");