Linux系統下終端亂碼終極解決方案
初入linux的程式員們,經常會受到亂碼的問候。可謂“始亂終棄”。因為亂碼,並且最終放棄了linux的不在少數。好吧,言歸正傳,先看看各類亂碼是怎麼形成的。
中文字元亂碼
這種情況一般是安裝了中文控制端,但沒有啟用中文應用造成的。只需要啟動相應軟體即可,如zhcon。或者是啟用了相應軟體,但字元集不對,需設定相應字元集,例如export LANG=zh_CN.UTF-8
ORACLE安裝介面亂碼
雖說ORACLE支援多國語言,會根據環境變數自動選擇字元集,但中文安裝好像還有問題,不過10.2以後的版本好像沒有該問題了,具體可以執行命令export LANG=en_US來設定為英文字元集環境
英文字元亂碼
一般該字元亂碼多出現在cat了二進位的檔案時,因為二進位檔案中多有控制碼,會導致終端介面亂碼,通常解決方案是用reset終端複位命令解決問題
其他偽終端亂碼
有時是通過SSH進入遠程LINUX伺服器時,cat一個core檔案,並且用reset命令都不能成功,怎麼辦?很簡單,看以下實驗,首先cat一個python的編譯檔案
oracle@linux-suse:~> cat fibo.pyc
m?
{?鯡c@sd
Zd
ZdS(cCs:d}}x'||jo|G|||}}qWdS(Nii(ii(tatbtn(RRR((tfibo.pytfibs
cCsIg}d}}x0||jo"|i||||}}qW|S(Nii(ii(tresultRRRtappend(RRRR((Rtfib2 s
N(RR(RR((Rt?s oracle@linux-suse:~> VT102VT102
-bash: VT102VT102: command not found
oracle@linux-suse:~>
在SSH終端上看到是的亂碼,提示符都是亂的,可以用以下命令恢複
oracle@linux-suse:~> tput sgr0
亂碼問題產生的原因是SSH的問題,因為在其他終端下,cat用樣一個檔案,不會產生亂碼,於是實驗亂碼產生的原因
oracle@linux-suse:~> ^N
只要用ctrl+v,ctrl+n就使用螢幕亂碼,當然恢複後再實驗
oracle@linux-suse:~> echo -e 'xe'
螢幕再次亂碼,好,再恢複
oracle@linux-suse:~> echo -e 'xf'
以上是需要盲打的,因為屏上看到的是亂碼,最終問題產生的原因是十六進位字元E產生的,解決也很簡單,十六進位字元F即可