1.页面乱码
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
2.URL乱码
tomcat->server.xml中port="8080"=>port="8080" URLEncoding="UTF-8"
3.表单内容乱码
<%
String userName=request.getParameter("userName");
userName=new String(userName.getBytes("ISO-8859-1"),"utf-8");
%>
使用过滤器
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.UnavailableException;
public class SetCharacterEncodingFilter implements Filter {
protected FilterConfig filterConfig;
protected String encodingName;
protected boolean enable;
public SetCharacterEncodingFilter() {
this.encodingName = "utf-8";
this.enable = false;
}
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
loadConfigParams();
}
private void loadConfigParams() {
this.encodingName = this.filterConfig.getInitParameter("encoding");
String strIgnoreFlag = this.filterConfig.getInitParameter("enable");
if (strIgnoreFlag.equalsIgnoreCase("true")) {
this.enable = true;
} else {
this.enable = false;
}
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if(this.enable) {
request.setCharacterEncoding(this.encodingName);
}
chain.doFilter(request, response);
}
public void destroy() {
}
}
4.数据库乱码
jdbc:......useUnicode=true;characterEncoding=utf-8
5.eclipse中保存乱码
<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8"%>
6.eclipse显示乱码
Preferences->General->Content Types->Text->JSP
7.下载中文文件名乱码
String fname = "中文";
OutputStream os = response.getOutputStream();//取得输出流
response.reset();//清空输出流
//下面是对中文文件名的处理
response.setCharacterEncoding("UTF-8");
fname = java.net.URLEncoder.encode(fname, "UTF-8");
response.setHeader("Content-Disposition", "attachment; filename="+ new String(fname.getBytes("UTF-8"), "gb2312") + ".xls");
response.setContentType("application/msexcel");//定义输出类型
os.close();