tomcat版本升级带来的编码问题

本文讲述了在升级tomcat版本后遇到的中文乱码问题。问题源于新版本默认的URIEncoding从ISO-8859-1变为UTF-8,而代码中仍使用旧版本的编码逻辑。解决方案是明确配置URI编码为UTF-8,并提醒开发者在版本升级时注意环境一致性,避免硬编码转换,遵循统一编码标准。
摘要由CSDN通过智能技术生成

tomcat版本升级带来的编码问题

前几天在定位一个中文乱码的问题,尝试使用了几种方式,包括设置tomcat server.xml中的属性URIEncoding为UTF-8、在项目web.xml文件中使用Spring的CharacterEncodingFilter设置属性encoding为UTF-8作为整个项目的filter,甚至查看了Linux的环境变量(UTF-8)编码,也无济于事,这个问题怪异的地方在于:这个搜索接口的中文字符的编解码方式代码已经很久没有动过了,按道理来说不应该会出现问题,生产环境中中文搜索也没有出现问题,偏偏在测试环境出现了中文乱码的问题,一时之间毫无思路。

查看代码时发现如下的代码片段:

String word = request.getParameter("keyword");//keyword=中文
String keyword = new String(word.getBytes("ISO-8859-1"),"UTF-8");

调试发现keyword的值为 ?? ,很明显是因为编码不对导致乱码,断点调试发现变量word值已为”中文”,根本不需要再做编码转换,当然,要解决当前环境的乱码问题已经很简单了,就是直接去掉不需要的编码转换逻辑即可,但是考虑到生产环境中这种逻辑是没有问题的,中文字符并没有出现乱码的情况,一时之间不敢乱改,后来咨询了组内的同事,他们建议再观察下,可以加上一个开关来控制是否需要做编码转换,虽然这种方式有点挫,但是当时考虑到版本快要上线了,时间紧急,实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值