最近把公司的項目使用jenkins來自動化部署,在開發環境中使用一段時間后發現,其中的一個前端接口項目出現中文亂碼的問題。跟蹤這個問題發現只要是使用jenkins部署的都會導致中文亂碼,而如果使用手動部署不經過Jenkins的話項目就一切正常。
所以我想有可能是因為jenkins部署的時候,導致目標服務器那邊獲取不到相應的環境變量。
把兩種方式啟動tomcat的catalina.out日志對比了一下,發現項目的啟動的encoding值真的不一樣:
jenkins.png
one.png
對比發現,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項目中文亂碼的問題了。