zoukankan      html  css  js  c++  java
  • tomcat项目中文乱码问题解决方法

    在部署tomcat项目时经常会遇到中文乱码问题,解决的方法可参考以下步骤。

    1、更改Tomcat安装目录下的confserver.xml,指定浏览器的编码格式为“utf-8”格式:
      方法是更改 server.xml 中的

        <Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="8443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='utf-8' />
    注意设置URIEncoding='utf-8'

    2、设置servlet过滤器

           方法是在项目的web.xml文件中加入以下filter

      <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>net.servlet.CharacterEncodingFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    

    net.servlet.CharacterEncodingFilter中的代码如下

    package net.servlet;
    
    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 CharacterEncodingFilter  implements Filter  {
    
    	private static String encoding = "utf-8";   
        private boolean ignore=true;  
    	
        protected String getEncoding(){   
            return this.encoding;   
        }   
        
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		String pencoding="utf-8";
    		if(ignore||null==request.getCharacterEncoding()){               
                if(pencoding!=null){   
                    request.setCharacterEncoding(pencoding);   
                }   
            }   
    //      System.out.println("encoding===="+encoding);   
            response.setContentType("text/html;charset="+pencoding);   
    //      do something here   
            //当前工作全部完成后,将请求放开给过滤器链的下一filter    
            chain.doFilter(request, response);   
    		
    	}
    
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    		  this.encoding=filterConfig.getInitParameter("encoding");   
    	        String value=filterConfig.getInitParameter("ignore");   
    	        if(value==null){   
    	            this.ignore=true;   
    	        }else if(value.equalsIgnoreCase("true")){   
    	            this.ignore=true;   
    	        }else if(value.equalsIgnoreCase("yes")){   
    	            this.ignore=true;   
    	        }else{   
    	            this.ignore=false;   
    	        }   
    	}
    }
    3、如果以上两个步骤还没有解决乱码问题,那就有可能是数据库本身的问题。应当将数据库的编码方式统一设置为utf-8。此外,还应注意设置数据库连接的编码类型。如果使用mysql数据库,在指定数据库连接url时应指定characterEncoding。

    <DataSources>
    	    <ds name="MyPrintPhoto">
    			<username>root</username>
    			<password>123456</password>
    			<dburl>jdbc:mysql://localhost:3306/myprintphoto?useUnicode=true&characterEncoding=utf8&useOldAliasMetadataBehavior=true
    			</dburl>
    			<classname>com.mysql.jdbc.Driver</classname>
    		</ds>
    </DataSources>


  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/zhmhhu/p/5867135.html
Copyright © 2011-2022 走看看