Fork me on GitHub

一次tomcat数据乱码事件

一次环境变量出错导致的tomcat数据乱码事件

1.1 事件起因

由于业务的调整,我们需要将在A服务器上的后台系统迁移到B服务器上的后台,我们选择在下班后进行迁移,因为那个时间点,后台系统已经几乎没有人在使用了。我将原来的tomcat 暂停后,压缩打包后上传在到B的服务器,然后我在B服务器上启动该项目,项目是正常启动了,整个访问也是没有问题,但是后台返回的数据是乱码的。 注意,我整个操作是在我们的堡垒机上面进行的,就是因为通过堡垒机登录的,所以导致后面出现问题。

1.3 事件的错误

排查思路,tomcat启动日志中是否有异常,环境变量是否有异常?
在查看日志中发现是没有异常的,然后我通过xshell 去查看环境变量也是没有异常的(我为什么不直接在堡垒机上查看)。
最后在多次尝试中,发现通过堡垒机登录B服务器时的环境变量中的 LANG 变量为空 ,正常这个地方是有值的,所以问题就是这个了。

1.4 事件的解决办法

 解决办法1(临时):export LANG="en_US.UTF-8"
 解决办法2(永久):  编辑登录用户的家目录的 .bashrc 文件,在底部加上 
export LANG="en_US.UTF-8"
    ```
这样我们每次登录就会自动设置导入该值了。
### 1.5 问题引申 
   我们在tomcat 的server.xml 文件里面有个参数为 URIEncoding ,这个值默认为 UTF-8 的,但是如果我们在org.apache.catalina.STRICT_SERVLET_COMPLIANCE 将system property 设置为true,那么url编码就使用ISO-8859-1.可能导致的url乱码。
posted @   自由早晚乱余生  阅读(824)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示