erp项目中遇到的乱码问题

在ERP项目中,使用Spring的CharacterEncodingFilter时遇到了乱码问题,主要表现为后台输出的中文变成?的格式,推测原因是iso-8859-1编码无法正确转换为中文。解决方法是在Tomcat的server.xml的<Connector>标签中添加URIEncoding="UTF-8"属性。然而,直接修改tomcat的server.xml并不足以解决由Eclipse运行项目时的乱码问题,因为Eclipse使用的是servers目录下的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    本项目中是使用spring中的org.springframework.web.filter.CharacterEncodingFilter来进行编码过滤,在web.xml中的配置如下:

<filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>false</param-value>
        </init-param>
    </filter>

    需要注意的是,过滤的配置需要注册在strust2过滤器之前,否则所有页面不会经过此过滤器。但是这种方法只能解决post方式传参的编码问题,而不能解决get方式传参。原因在于post的参数在请求数据包的消息体中而get的参数在数据包的请求行中。过滤器中 request.setCharacterEncoding(charset); 的转码方式只对消息体中的参数有效,因此当在url中传中文参数时后台得到的就是乱码了。如下图所示,在jsp页面中的链接中传中文参数


后台打印出的结果就成了乱码,且从全是?的乱码格式可以猜测出是iso-8859-1编码转中文编码时出的问题,因为iso-8859-1编码中文时是统一编码成为?一样的格式。


解决方案:在tomcat中的server.xml中的<Connector>中加入URIEncoding="UTF-8"就可以解决。格式如下


 需要注意的是,如果直接修改tomcat目录下的server.xml的话,直接通过eclipse运行的项目依然是会乱码的,因为eclipse读取的是他所建立的那个servers目录下的配置,具体位置如下。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值