插入数据库后乱码,MySQl数据库,编码是utf-8,我也JSP页面也是utf-8.是乱码.我改成gb2312后,还是乱码,真是郁闷!

解决方案 »

  1.   

    设置过滤器.......1、到你Tomcat 5.0\webapps\servlets-examples\WEB-INF\classes\filters下找到SetCharacterEncodingFilter.java这个文件。
    2、把SetCharacterEncodingFilter.java放到你的工程代码中。
    3、设置web.xml
        <filter>
         <filter-name>Set Character Encoding </filter-name>
         <filter-class>你的包.SetCharacterEncodingFilter </filter-class>
         <init-param>
           <param-name>encoding </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>Set Character Encoding </filter-name>
         <servlet-name>action </servlet-name>
       </filter-mapping>
      

  2.   

    插入db后乱码,那发生在页面编码上,request获得页面编码的时候,设置过滤器可以解决
      

  3.   

    但是需要指出的是 这种filter解决的是表单post时候的编码转换
    对于GET方法提交,定位到你Tomcat安装目录下的conf目录,打开conf目录下的server.xml文件,找到对JSP网页端口(默认为 8080)进行服务的Connector组件的设置部分,给该Connector组件添加一个属性:URIEncoding="GBK".修改后的 Connector组件如下:
        <Connector  port="9080"  maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true"  URIEncoding="UTF"/>
    这样修改后,重启Tomcat就可以正确处理GET方法提交的表单数据了
      

  4.   

    我这里已经有了一个filter了public class EncodingFilter implements Filter 
    {

    private String targetEncodin = "UTF-8";
    protected FilterConfig filterConfig; /**
     * 
     */
    public EncodingFilter() 
    {
    super();
    // TODO Auto-generated constructor stub
    } /* (non-Javadoc)
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
     */
    public void init(FilterConfig config) throws ServletException 
    {
    // TODO Auto-generated method stub
    this.filterConfig = config;
    if (config.getInitParameter("encoding") != null && !config.getInitParameter("encoding").equals("")) 
    {
    this.targetEncodin = config.getInitParameter("encoding");
    }
    } /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,FilterChain chain) throws IOException, ServletException 
    {
    // TODO Auto-generated method stub
    servletRequest.setCharacterEncoding(this.targetEncodin);
    servletResponse.setContentType("text/html; charset=" + this.targetEncodin);
    HttpServletResponse httpServletResponse = (HttpServletResponse)servletResponse;
    httpServletResponse.setHeader("Pragma", "No-cache");
    httpServletResponse.setHeader("Cache-Control", "no-cache");
    httpServletResponse.setHeader("Expires", "0");
    chain.doFilter(servletRequest, servletResponse);
    } /* (non-Javadoc)
     * @see javax.servlet.Filter#destroy()
     */
    public void destroy() 
    {
    // TODO Auto-generated method stub
    this.filterConfig = null;
    }}web.xml
    <filter>
    <filter-name>charEncoding</filter-name>
    <filter-class>com.tiandinet.StrutsArticle.FunctionBeans.EncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
    </init-param>
    </filter> <filter-mapping>
    <filter-name>charEncoding</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
      

  5.   

    在JSP文件的最上方添加如下语句:
        <%@page contentType="text/html; charset=utf-8"%>
    并在</head>之前添加如下语句:
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">