Tomcat日志中文亂碼怎么解決?

?  linux系統(tǒng)中文語(yǔ)言亂碼,是很多小伙伴在開始接觸linux時(shí)經(jīng)常遇到的問題,而且當(dāng)我們將已在wndows部署好的項(xiàng)目搬到linux上運(yùn)行時(shí),tomcat的輸出日志中文全為亂碼(在windows上正常),看著非常心塞,那么我們應(yīng)該怎么解決呢?

  Tomcat日志中文亂碼怎么解決?

               系統(tǒng)中文亂碼

Tomcat日志中文亂碼怎么解決?

             ?  Tomcat輸出日志中文亂碼

 系統(tǒng)環(huán)境

  • CentOS 7.0 64位

  • jdk-8u11-linux-x64.

  • apache-tomcat-8.5.16

? ? ?解決步驟:

   1.安裝中文語(yǔ)言包 ?

        先查看系統(tǒng)是否有安裝中文語(yǔ)言包 ?

       # locale -a ?(列出所有可用的公共語(yǔ)言環(huán)境的名稱)

        Tomcat日志中文亂碼怎么解決?

? ? ? ? ? ? ? ? ?    若發(fā)現(xiàn)以上幾項(xiàng),說(shuō)明系統(tǒng)已安裝中文語(yǔ)言包,無(wú)需再安裝,那這幾項(xiàng)代表什么意思呢?

        {語(yǔ)言代號(hào)}_{國(guó)家代號(hào)}.{字符集}

        zh是中文的代號(hào)、CN是中國(guó)的代號(hào)、gb18030,gb2312,utf8是語(yǔ)言字符集

        那么每一項(xiàng)可以通俗理解為 ? “你是說(shuō)中文的,你在中國(guó),語(yǔ)言字符集是gb18030/gb2312/utf8”

        如果沒有發(fā)現(xiàn)以上幾項(xiàng),則手動(dòng)安裝中文語(yǔ)言包

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

   2.修改i18n國(guó)際化和locale.conf本土化配置文件

      在修改配置文件之前,我們先看看當(dāng)前系統(tǒng)語(yǔ)言環(huán)境

? ? ? ? ? ? ? ? ? ? ? ? # ? ?locale ?

?      Tomcat日志中文亂碼怎么解決?   

 (“en_US.UTF-8″按照上面的內(nèi)容可以理解為“你說(shuō)英語(yǔ),你在美國(guó),語(yǔ)言字符集為UTF-8”) 

    ? ? ? ? 每項(xiàng)的意思分別為 :

      ?LANG:當(dāng)前系統(tǒng)的語(yǔ)言

? ? ? ? ? ? ? ? ? ? LC_CTYPE:語(yǔ)言符號(hào)及其分類

     ? LC_NUMERIC:數(shù)字

     ? LC_COLLATE:比較和排序習(xí)慣

       LC_TIME:時(shí)間顯示格式

      ?LC_MONETARY:貨幣單位

      LC_MESSAGES:信息主要是提示信息,錯(cuò)誤信息, 狀態(tài)信息, 標(biāo)題, 標(biāo)簽, 按鈕和菜單等

      LC_NAME:姓名書寫方式

      LC_ADDRESS:地址書寫方式

      LC_TELEPHONE:電話號(hào)碼書寫方式

      LC_MEASUREMENT:度量衡表達(dá)方式

     ? ?LC_PAPER:默認(rèn)紙張尺寸大小

     ? ?LC_IDENTIFICATION:對(duì)locale自身包含信息的概述

     LC_ALL:優(yōu)先級(jí)最高變量,若設(shè)置了此變量,所有LC_* 和LANG變量會(huì)強(qiáng)制跟隨它的值

     我們看到雖然安裝了中文語(yǔ)言包但本機(jī)的語(yǔ)言環(huán)境并不是中文,先修改i18n配置文件

     # ? ?vim /etc/sysconfig/i18n

      添加如下兩行代碼

      LANG=”zh_CN.UTF-8″
      LC_ALL=”zh_CN.UTF-8″

     Tomcat日志中文亂碼怎么解決?

    # ?source ? ?/etc/sysconfig/i18n

    再修改 locale.cnf配置文件

    # ? vim?/etc/locale.conf

? ? ? ? ? ? ? LANG=”zh_CN.UTF-8″

   ? ?Tomcat日志中文亂碼怎么解決?

? ? ? ? ? ? ? # ?source ??/etc/locale.conf

?    重啟系統(tǒng)

     # reboot

  3.設(shè)置終端連接編碼

     文件->打開->選中會(huì)話->右鍵->屬性->終端 (我用的終端連接工具是Xshell,其它連接工具更改編碼方式請(qǐng)自行百度)

     將編碼改為 UTF-8

Tomcat日志中文亂碼怎么解決?

     重新連接,再查看當(dāng)前系統(tǒng)語(yǔ)言環(huán)境

      # locale?

? ? ? ? ? ? ? ? ? ??Tomcat日志中文亂碼怎么解決?

     發(fā)現(xiàn)系統(tǒng)語(yǔ)言環(huán)境已經(jīng)成功改為 “zh_CN.UTF-8”

     再次嘗試編輯中文

     # vim 你是豬嗎

     Tomcat日志中文亂碼怎么解決?

?     # ?ls

     Tomcat日志中文亂碼怎么解決?

     SUCCESS!至此,系統(tǒng)中文亂碼問題已解決。

  4.解決Tomcat輸出日志亂碼

  既然系統(tǒng)中文亂碼已經(jīng)解決了,那么Tomcat輸出日志中文亂碼會(huì)不會(huì)也解決了呢?

  我們現(xiàn)在看看Tomcat輸出日志  

  進(jìn)入Tomcat目錄

? ? ? # cd $CATALINA_HOME

? ? ?# ?tail -f ./logs/catalina.out

? ? ??Tomcat日志中文亂碼怎么解決?

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

  分析:既然系統(tǒng)已經(jīng)不會(huì)出現(xiàn)中文亂碼,證明系統(tǒng)語(yǔ)言環(huán)境是正常的,但是Tomcat日志還會(huì)出現(xiàn)中文亂碼,說(shuō)明是Tomcat內(nèi)部的問題,網(wǎng)上查了一些資料,知道是JVM(Java Virtual Machine)

     java虛擬機(jī)所用的字符集與系統(tǒng)所用的字符集不一致造成的,知道原因,問題就好解決了,可以通過(guò)配置JVM的啟動(dòng)參數(shù)來(lái)達(dá)到修改JVM所使用字符集的目的。

? ? ? ?# ls -l ./bin/

? ? ??Tomcat日志中文亂碼怎么解決?

  找到 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

? ? ?Tomcat日志中文亂碼怎么解決?

? ? ?# vim ./bin/catalina.sh

? Tomcat日志中文亂碼怎么解決?

  保存退出,重啟Tomcat

? # ./bin/shutdown.sh

? ??# ./bin/startup.sh

 現(xiàn)在再查看輸出日志

? ?# tail -f ./logs/catalina.out

? 向服務(wù)器發(fā)一次請(qǐng)求

Tomcat日志中文亂碼怎么解決?

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊12 分享