linux centos6中文亂碼思路梳理

在linux環境下操做,常常遇到中文亂碼的狀況,下面整理下本身遇到問題的解決思路:java

出現位置:tomcat日誌;linux

出現效果:中文顯示問號:shell

解決思路:數據庫

一、輸入echo $LANG打印當前使用的系統語言,或輸入locale直接查看所有:tomcat

LANG=en_US.UTF-8    // LC_*的默認值,是最低級別的設置,若是LC_*沒有設置,則使用該值。相似於 LC_ALL。
LC_CTYPE="en_US.UTF-8"    //用於字符分類和字符串處理,控制全部字符的處理方式,包括字符編碼,字符是單字節仍是多字節,如何打印等。是最重要的一個環境變量
LC_NUMERIC="en_US.UTF-8"    // 非貨幣的數字顯示格式
LC_TIME="en_US.UTF-8"    // 時間和日期格式
LC_COLLATE="en_US.UTF-8"    //環境的排序和比較規則
LC_MONETARY="en_US.UTF-8"    // 貨幣格式
LC_MESSAGES="en_US.UTF-8"    //提示信息的語言。另外還有一個LANGUAGE參數,它與LC_MESSAGES類似,但若是該參數一旦設置,則LC_MESSAGES參數就會失效。LANGUAGE參數可同時設置多種語言信息,如LANGUANE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"。
LC_PAPER="en_US.UTF-8"    //默認紙張尺寸大小
LC_NAME="en_US.UTF-8"    //姓名書寫方式
LC_ADDRESS="en_US.UTF-8"    //地址書寫方式
LC_TELEPHONE="en_US.UTF-8"    //電話號碼書寫方式
LC_MEASUREMENT="en_US.UTF-8"    //度量衡表達方式
LC_IDENTIFICATION="en_US.UTF-8"    //對locale自身包含信息的概述
LC_ALL=    //它是一個宏,若是該值設置了,則該值會覆蓋全部LC_*的設置值。注意,LANG的值不受該宏影響。服務器

若是沒有須要安裝,須要下載安裝。編碼

(1)、安裝全部與中文支持相關的包日誌

# yum -y groupinstall chinese-support排序

(2)、修改字符編碼配置文件字符串

# vi /etc/sysconfig/i18n

修改後內容以下:

LANG="zh_CN.UTF-8"

SUPPORTED="zh_CN:zh:en_US.UTF-8:en_US:en:zh_CN.GB18030"

SYSFONT="latarcyrheb-sun16"

區分en_US.UTF-8與zh_US.UTF-8,分別默認顯示爲英文和中文模式。

二、排除系統語言後,查看終端的設置:

例如xshell,屬性>終端>編碼一項,是否設置爲Uncod(UTF-8)

三、上述都沒有問題後,考慮tomcat自身的設置:

在tomcat>bin>catalina.sh(window環境查看catalina.bat)文件中,echo "Using CATALINA_BASE:   $CATALINA_BASE"前面加上:

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

從新啓動tomcat,再觀察日誌的中文顯示狀況

四、上述都操做事後仍是存在中文問題,那麼就要考慮項目自己,例如:

(1)數據庫的編碼;

(2)打包前請檢查文件的編碼;

 

上述操做沒有順序,可根據猜想去試圖查看。操做中,比較支持在同一步驟相同環境下多個項目或服務器比對的方式,找到問題的速度會更快...

相關文章
相關標籤/搜索