在mysql中写入和查询数据的信息时总是乱码,我在网上找了很多遇到相似的问题,还是不能解决,谁能帮我解释一下。谁能帮我写个filter 来解决这个问题?

解决方案 »

  1.   

    /**配置说明
    <filter>
    <filter-name>EncodingFilter</filter-name>
    <display-name>Character Encoding Filter</display-name>
    <filter-class>com.linhai.common.action.SetCharacterEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <servlet-name>action</servlet-name>
    </filter-mapping>
    **/import java.io.IOException;
    import javax.servlet.*;public class SetCharacterEncodingFilter
        implements Filter
    {    public SetCharacterEncodingFilter()
        {
            encoding = null;
            filterConfig = null;
        }    public void destroy()
        {
            encoding = null;
            filterConfig = null;
        }    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException
        {
            String enc = selectEncoding(request);
            if(enc != null)
                request.setCharacterEncoding(enc);
            chain.doFilter(request, response);
        }    public void init(FilterConfig filterConfig)
            throws ServletException
        {
            this.filterConfig = filterConfig;
            encoding = filterConfig.getInitParameter("encoding");
        }    protected String selectEncoding(ServletRequest request)
        {
            return encoding;
        }    protected String encoding;
        protected FilterConfig filterConfig;
    }
    希望对你有所帮助
      

  2.   

    http://www.javaresearch.org/article/158937.htm
     看下这篇文章吧。
     应该对你有帮助。!
      

  3.   

    mysql 安装的时候,编码是否选对了,要选择gbk或gb2312
      

  4.   

    又是这样的问题
    我前几天刚刚遇到过
    也刚刚见人问过下面是我做的时候遇到这样的问题的笔记
    你看看 希望对你有帮助写入和查询数据的信息时总是乱码
    显然是在页面提交的时候出现了问题!
    因为你写入的数据有问题直接导致读出来的数据有问题
    1.在提交页面和处理页面添加如下的代码
      <%
      request.setCharacterEncoding("gb2312"); 
      response.setCharacterEncoding("gb2312"); 
      %>
      
      2.DriverManager.getConnection("jdbc:mysql://localhost:3306/news?useUnicode=true&characterEncoding=GBK","root","");
      
      3.写一个方法,将收集的字符串进行过滤
      public  String formateString(String string){
    String str="";

    try {
    str+=new String(string.getBytes("gb2312"));
    } catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    }

    return str;
    }
    这三步足够解决你的问题啦!