1. 程式人生 > >linux下亂碼問題

linux下亂碼問題

今天在新伺服器的tomcat上跑專案的時候 tomcat控制檯亂碼!
servlet接收引數亂碼。

經常要看日誌所以在/home目錄下寫了個指令碼

[root@template ~]# cd /home/sh/
[root@template sh]# ll
總用量 4
-rwxr-xr-x 1 root root 54 616 18:08 showtomcatlog.sh
[root@template sh]# less showtomcatlog.sh 
 tail -f /usr/local/tomcat7/logs/catalina-daemon.out 
showtomcatlog.sh (END) 

許可權改為755 以後看日誌只要執行這個指令碼

控制檯亂碼解決辦法
1.嘗試修改tomcat的編碼

[root@template sh]# vim /usr/local/tomcat7/conf/server.xml
/8080 找到這一行 新增如下  URIEncoding="UTF-8" 
 <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
               URIEncoding="UTF-8" 
               useBodyEncodingForURI="true"
enableLookups="false"/>

改了之後沒有效果

2.嘗試修改tomcat 配置檔案

[root@template sh]# vim /usr/local/tomcat7/bin/catalina.sh 

242行左右
#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
保留上面註釋複製增加一行
JAVA_OPTS="-Dfile.encoding=UTF8 -Dsun.jnu.encoding=UTF8"

還是沒卵用

3.終於看到一個靠譜一點的建議。修改系統檔案

[root@template sh]# vim /etc/sysconfig/i18n
原來檔案如下
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

修改第一行為
LANG="zh_CN.UTF-8"
SYSFONT="latarcyrheb-sun16"

在修改為 “zh_CN.UTF-8″ 之前可以使用locale -a 檢視伺服器是否支援該編

其實早應該想到。之前、在Xshell、putty、SSH Secure Shell Client 等等客戶端設定GBK時才不亂碼。改了之後客戶端要設定成UTF-8

至此亂碼問題完美解決。整理下寫個日誌希望對有需要的童鞋有幫助。感覺設定tomcat配置檔案還是有作用的。之前亂碼是一串問好?????設定完後是亂碼的漢字。改了i18n後亂碼解決。

今早發現原來問題沒有解決
情況如下,昨天改了編碼之後再tail 看日誌沒有亂碼了。但是重啟了tomcat之後又出現亂碼。 開機自啟動不會亂碼。手動重啟就會出現亂碼?
tomcat手動重啟後亂碼。tomcat重啟後亂碼

標記一下,待解決

上午忙去了沒理它,下午無緣無故自己好了!不再亂碼?神奇!