一次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亂碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM