定時重啟tomcat指令碼導致的亂碼問題

yf.z發表於2014-12-22

之前的專案(假設名字為專案A)使用javax.mail發郵件,,後來因專案需要加了org.apache.ws.commons.axiom包和org.apache.axis2包導致發郵件亂碼。 因專案進度原因及解決java衝突需花費較長時間,,故呼叫其它專案(假設專案為專案B)介面來代發郵件。由此發現一個詭異的亂碼問題!



一開始專案A的郵件是正常的,後來出現郵件標題中文亂碼,登入專案B伺服器重啟tomcat,編碼問題又消失了,過段時間又再次出現亂碼。原因肯定是專案或伺服器有變動引起的。專案A發郵件這部分一直沒變動,專案B基本也沒變動過,伺服器配置也沒變動過,唯一有變動的是專案B的伺服器增加了定時重啟tomcat的指令碼。檢視專案B伺服器的日誌,發現中文都顯示了問號。經過與運維同學的排查發現了問題的所在


當使用者登入了linux伺服器後,會獲取到當前系統的編碼,後續其它操作都會使用到該編碼,這時重啟tomcat後專案恢復正常;而定時重啟tomcat的指令碼中並沒有指明編碼,故每次重啟tomcat後系統的編碼就出現問題;


解決方法是:在定時重啟tomcat指令碼中指定編碼

相關文章