一种方法是把tomcat的server.xml文件
所有的<Connector>标签的URIEncoding属性进行设置,
如: <Connector port="8000" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />
另一种方法是写过滤器
public class SetCharacterEncodingFilter implements Filter {
private static final String DEFAULT_ENCODING = "UTF-8";
protected String encoding;
protected FilterConfig filterConfig;
protected boolean ignore;
public SetCharacterEncodingFilter() {
encoding = null;
filterConfig = null;
ignore = true;
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException {
try {
if (ignore || request.getCharacterEncoding() == null)
if (encoding != null) {
request.setCharacterEncoding(encoding);
response.setContentType("text/html; charset=" + encoding);
} else {
request.setCharacterEncoding(DEFAULT_ENCODING);
response.setContentType("text/html; charset=" + DEFAULT_ENCODING);
}
} catch (Exception e) {
e.printStackTrace();
}
chain.doFilter(request, response);
}
public FilterConfig getFilterConfig() {
return filterConfig;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
encoding = filterConfig.getInitParameter("CharacterEncoding");
String value = filterConfig.getInitParameter("ignore");
if (value == null)
ignore = true;
else if (value.equalsIgnoreCase("true"))
ignore = true;
else if (value.equalsIgnoreCase("yes"))
ignore = true;
else
ignore = false;
}
public void setFilterConfig(FilterConfig filterConfig) {
this.filterConfig = filterConfig;
}
}
web.xml配置如下:
<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class> com.xx.xx.xx.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>CharacterEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
最后附上:
System.out.println(URLDecoder.decode(queryString, "ISO-8859-1")+"URLDecoder.decode()转成ISO-8859-1");
System.out.println(URLDecoder.decode(queryString, "GBK")+"URLDecoder.decode()转成GBK");
System.out.println(URLDecoder.decode(queryString, "UTF-8")+"URLDecoder.decode()转成UTF-8");
System.out.println(new String(queryString.getBytes("ISO-8859-1"),"gbk")+"ISO-8859-1转成gbk");
System.out.println(new String(queryString.getBytes("ISO-8859-1"),"UTF-8")+"ISO-8859-1转成UTF-8");
System.out.println(new String(queryString.getBytes(),"utf-8")+"getBytes()直接转成UTF-8");