Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 11428|回复: 0

tomcat项目中文乱码问题解决方法

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-23 03:33:45 | 显示全部楼层 |阅读模式

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

    1、更改Tomcat安装目录下的conf\server.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>


    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-5 00:39 , Processed in 0.058065 second(s), 27 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表