CentOS 6.3 x64 + SecureCRT 環境下,su 或 su - 按 Enter 後長時間無回應,最終出現亂碼錯誤。根因:系統語系設為中文(GB18030)而終端編碼設為 UTF-8 導致提示訊息編碼不匹配,造成 su 進程掛起。
su/su - 無回應,約 1 分鐘後出現亂碼提示Options → Session Options → Terminal → Appearance → Character encoding 從 Default 改為 UTF-8。/etc/sysconfig/i18n:
#LANG="en_US.UTF-8"
#SYSFONT="latarcyrheb-sun16"
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
修改 /etc/sysconfig/i18n 為:
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
SecureCRT 保持 UTF-8。重新登入後:
su 正常運作vi 編輯中文檔案不再亂碼su 提示訊息(如 "Password:")由系統語系決定編碼;終端以 UTF-8 解碼顯示,產生亂碼甚至導致讀取阻塞。統一「系統語系編碼 = 終端編碼」即可避免此類問題。
en_US.UTF-8 或 zh_CN.UTF-8,避免 GB18030/GB2312 舊編碼。zhcon 或使用支援 UTF-8 的桌面環境。編碼不一致是跨平台管理常見坑,統一 UTF-8 是現代 Linux 運維的標準做法。