• 解决数据库录入中文数据乱码问题


    如题,测试JSP代码时在SQL SERVER2000数据库中录入数据时,发现录入的数据全部是乱码,后查询资料解决。
    很简单,加上  <%request.setCharacterEncoding("gb2312");%>就OK了。

    或者是设置一个Filter

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     
    */

    package jdbcbook.pub.filters;

    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;

    /**
     * 设置Tomcat的正确编码格式
     * 
    @author Administrator
     
    */
    public class SetCharacterEncodingFilter implements Filter {

        
    protected String encoding=null;
        
    protected FilterConfig filterConfig=null;
        
    protected boolean ignore=true;

        
    //初始化方法,通过配置的参数设置标识变量
        public void init(FilterConfig filterConfig) throws ServletException {
            
    this.filterConfig=filterConfig;
            
    this.encoding=filterConfig.getInitParameter("encoding");
            String value
    =filterConfig.getInitParameter("ignore");
            
    if(value==null)
                
    this.ignore=false;
            
    else if (value.equalsIgnoreCase("false"))
                
    this.ignore=true;
            
    else if (value.equalsIgnoreCase("no"))
                
    this.ignore=true;
            
    else
                
    this.ignore=false;
        }

        
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            
    //判断是否需要进行编码的设置
            if(!ignore || (request.getCharacterEncoding()==null))
            {
            
    //得到配置文件中的编码类型
                String encoding =selectEncoding(request);
                
    if(encoding!=null)
                    request.setCharacterEncoding(encoding);
            }
            chain.doFilter(request, response);
        }

        
    public void destroy() {
            
    this.encoding=null;
            
    this.filterConfig=null;
        }

        
    //得到配置的编码类型
        protected String selectEncoding(ServletRequest request)
        {
            
    return this.encoding;
        }
    }
    在web.xml中进行相应的配置
        <filter>
            
    <filter-name>Set Character Encoding</filter-name>
            
    <filter-class>jdbcbook.pub.filters.SetCharacterEncodingFilter</filter-class>
            
    <init-param>
                
    <param-name>encoding</param-name>
                
    <param-value>GBK</param-value>
            
    </init-param>
            
    </filter>
        
    <filter-mapping>
            
    <filter-name>Set Character Encoding</filter-name>
            
    <url-pattern>/*</url-pattern>
        
    </filter-mapping>
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    thinkphp使用foreach遍历的方法
    php中foreach中使用&的办法
    thinkphp做搜索功能
    数据库虚拟主机目录的配置文件
    网页响应式设计原理
    数据库常见远程连接问题
  • 原文地址:https://www.cnblogs.com/qixin622/p/1526443.html
Copyright © 2020-2023  润新知