过滤器的设置:
首先写一个java过滤字符编码类
package cn.csuinfosoft.filter;
/**
* title:过滤字符编码
*/
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;
public class EncodeFilter implements Filter{
private String encode = null;
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
request.setCharacterEncoding( encode );//设置字符编码
chain.doFilter(request,response);
}
//读取初始化参数
public void init(FilterConfig config) throws ServletException {
encode = config.getInitParameter("encode");
System.out.println( "EncodeFilter...encode:"+encode );
}
}
其次在
web.xml中配置
encode
cn.csuinfosoft.filter.EncodeFilter
encode
utf-8
encode
*.do//或者改成/*试试
2.在jsp页面中加入
<%
request.setCharacterEncoding("utf-8");
%>
用过滤器的话一般可以解决 或者用
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
设置编码方式 如果还不行的话在服务器里面直接设置,tomcat服务器的设置方法如下:
tomcat根目录--conf--server.
xml--设置端口号的地方的最后(结束前)加上这句代码:URIEncoding="UTF-8"
另外的乱码解决问题小方法
1、
JSP页面乱码
这种乱码的原因是应为没有在页面里指定使用的字符集编码,解决方法:只要在页面开始地方用下面代码指定字符集编码即可,
<%@ page contentType="text/html;charset=utf-8" language="java" %>
2、数据库乱码
这种乱码会使你插入数据库的中文变成乱码,或者读出显示时也是乱码,解决方法如下:
在数据库连接字符串中加入编码字符集
String Url="jdbc:
mysql://localhost/digitgulf?user=root&;password=root&;useUnicode=true&;characterEncoding=GB2312";
并在页面中使用如下代码:
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
3、中文作为参数传递乱码
当我们把一段中文字符作为参数传递个另一页面时,也会出现乱码情况,解决方法如下:
在参数传递时对参数编码,比如
RearshRes.jsp?keywords=" + java.net.
URLEncoder.encode(key
words)
然后在接收参数页面使用如下语句接收
keywords=new String(request.getParameter("keywords").getBytes("8859_1"));
以上为现阶段遇到的乱码问题,乱码的核心
问题还是字符集编码问题,只要掌握了这一点,一般的乱码问题都可以解决。