最近把公司的项目使用jenkins来自动化部署,在开发环境中使用一段时间后发现,其中的一个前端接口项目出现中文乱码的问题。跟踪这个问题发现只要是使用jenkins部署的都会导致中文乱码,而如果使用手动部署不经过Jenkins的话项目就一切正常。
所以我想有可能是因为jenkins部署的时候,导致目标服务器那边获取不到相应的环境变量。
把两种方式启动tomcat的catalina.out日志对比了一下,发现项目的启动的encoding值真的不一样:
对比发现,jenkins部署的项目的sun.jnu.encoding、file.encoding的值都是ANSI_X3.4-1968。而手动发布的是UTF-8。
具体的是哪里导致出现这种差异我到现在也还没查找出来。
这里直接给出解决方式吧:
1、修改tomcat目录bin文件夹下面的catalina.sh配置文件,在文件中添加一句:export LANG=zh_CN.UTF-8
2、如果不想动tomcat的配置,并且启动项目是shell脚本的话,那就把export LANG=zh_CN.UTF-8这句添加到shell脚本上面。
这样就可以临时解决一下因为jenkins导致tomcat web项目中文乱码的问题了。