解決CentOS7中文語言亂碼(包括Tomcat日誌中文亂碼)問題,centos7tomcat

來源:互聯網
上載者:User

解決CentOS7中文語言亂碼(包括Tomcat日誌中文亂碼)問題,centos7tomcat

   Linux系統中文語言亂碼,是很多小夥伴在開始接觸Linux時經常遇到的問題,而且當我們將已在Wndows部署好的項目搬到Linux上運行時,Tomcat的輸出日誌中文全為亂碼(在Windows上正常),看著非常心塞,那麼我們應該怎麼解決呢?

  

               系統中文亂碼

                Tomcat輸出日誌中文亂碼

 系統內容

  • CentOS 7.0 64位
  • jdk-8u11-linux-x64.
  • apache-tomcat-8.5.16

     解決步驟:

   1.安裝中文語言套件  

        先查看系統是否有安裝中文語言套件  

       # locale -a  (列出所有可用的公用語言環境的名稱)

        

                     若發現以上幾項,說明系統已安裝中文語言套件,無需再安裝,那這幾項代表什麼意思呢?

        {語言代號}_{國家代號}.{字元集}

        zh是中文的代號、CN是中國的代號、gb18030,gb2312,utf8是語言字元集

        那麼每一項可以通俗理解為   “你是說中文的,你在中國,語言字元集是gb18030/gb2312/utf8”

        如果沒有發現以上幾項,則手動安裝中文語言套件

       # yum install kde-l10n-Chinese            (大概11M)

   2.修改i18n國際化和locale.conf本土化設定檔

      在修改設定檔之前,我們先看看當前系統語言環境

                        #    locale  

          

 ("en_US.UTF-8"按照上面的內容可以理解為“你說英語,你在美國,語言字元集為UTF-8”) 

            每項的意思分別為 :

       LANG:當前系統的語言

                    LC_CTYPE:語言符號及其分類

       LC_NUMERIC:數字

       LC_COLLATE:比較和排序習慣

       LC_TIME:時間顯示格式

       LC_MONETARY:貨幣單位

      LC_MESSAGES:資訊主要是提示資訊,錯誤資訊, 狀態資訊, 標題, 標籤, 按鈕和菜單等

      LC_NAME:姓名書寫方式

      LC_ADDRESS:地址書寫方式

      LC_TELEPHONE:電話號碼書寫方式

      LC_MEASUREMENT:度量衡表達方式

        LC_PAPER:預設紙張尺寸大小

        LC_IDENTIFICATION:對locale自身包含資訊的概述

     LC_ALL:優先順序最高變數,若設定了此變數,所有LC_* 和LANG變數會強制跟隨它的值

     我們看到雖然安裝了中文語言套件但原生語言環境並不是中文,先修改i18n設定檔

     #    vim /etc/sysconfig/i18n

      添加如下兩行代碼

      LANG="zh_CN.UTF-8"
      LC_ALL="zh_CN.UTF-8"

     

    #  source    /etc/sysconfig/i18n

    再修改 locale.cnf設定檔

    #   vim /etc/locale.conf

              LANG="zh_CN.UTF-8"

      

              #  source   /etc/locale.conf

     重啟系統

     # reboot

  3.設定終端串連編碼

     檔案->開啟->選中會話->右鍵->屬性->終端 (我用的終端串連工具是Xshell,其它串連工具更改編碼方式請自行百度)

     將編碼改為 UTF-8

        

     重新串連,再查看當前系統語言環境

      # locale 

                    

     發現系統語言環境已經成功改為 “zh_CN.UTF-8”

     再次嘗試編輯中文

     # vim 你是豬嗎

     

      #  ls

     

     SUCCESS!至此,系統中文亂碼問題已解決。

  4.解決Tomcat輸出日誌亂碼

  既然系統中文亂碼已經解決了,那麼Tomcat輸出日誌中文亂碼會不會也解決了呢?

  我們現在看看Tomcat輸出日誌  

  進入Tomcat目錄

      # cd $CATALINA_HOME

     #  tail -f ./logs/catalina.out

      

  很遺憾,Tomcat日誌中文還是亂碼。

  分析:既然系統已經不會出現中文亂碼,證明系統語言環境是正常的,但是Tomcat日誌還會出現中文亂碼,說明是Tomcat內部的問題,網上查了一些資料,知道是JVM(Java Virtual Machine)

     java虛擬機器所用的字元集與系統所用的字元集不一致造成的,知道原因,問題就好解決了,可以通過配置JVM的啟動參數來達到修改JVM所使用字元集的目的。

       # ls -l ./bin/

      

  找到 daemon.sh 和 catalina.sh   分別加入以下代碼:

      JAVA_OPTS="$JAVA_OPTS -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8 -Duser.language=zh_CN -Dsun.jnu.encoding=UTF-8"

      # vim ./bin/daemon.sh

     

     # vim ./bin/catalina.sh

  

  儲存退出,重啟Tomcat

  # ./bin/shutdown.sh

    # ./bin/startup.sh

 現在再查看輸出日誌

   # tail -f ./logs/catalina.out

  向伺服器發一次請求

 

 Tomcat輸出日誌中文正常顯示。

           end!    (*^-^*)        

-----------------------------------------------------本人能力有限,有錯誤或者不足之處歡迎指正,也歡迎聯絡我交流學習--------------------------------------------------------------------------------------------------------------------

連絡方式
  • 電子郵箱:1424769309@qq.com
  • 號:R1284103044

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.