SecureCRT 連線 Linux 伺服器後出現中文亂碼,核心原因只有一個:**終端模擬器、系統 Locale、檔案編碼三者不一致**。本文提供標準化排查流程,從檔案編碼檢測到系統 Locale 調整、SecureCRT 設定同步,一次解決亂碼困擾。

檔案編碼 = 系統 Locale = SecureCRT 會話編碼
三者任一不匹配即產生亂碼。
:set fileencoding → 輸出如 fileencoding=latin1(即 ISO-8859-1)file Mysql2.txt → ISO-8859 text, with CRLF line terminators常見編碼對應:
UTF-8、GBK/GB18030、ISO-8859-1 (latin1)、BIG5
若檔案為 UTF-8,系統應設為 zh_TW.UTF-8 或 en_US.UTF-8;若為 GBK,設為 zh_CN.GBK。
臨時生效(當前 Shell):
export LANG=zh_TW.UTF-8
export LC_ALL=zh_TW.UTF-8
永久生效(全系統):
# CentOS/RHEL
echo 'LANG="zh_TW.UTF-8"' > /etc/locale.conf
# Debian/Ubuntu
dpkg-reconfigure locales # 選擇 zh_TW.UTF-8
驗證:echo $LANG、locale
UTF-8)若檔案編碼確為 UTF-8 但 Vim 誤判為 latin1:
:e ++enc=utf-8
若需永久轉換檔案編碼:
:set fileencoding=utf-8
:w
ls、cat 仍亂碼LC_ALL 覆蓋 LANG 導致預期外行為遵循「三者一致」原則,依序驗證檔案→系統→終端,亂碼問題可在 5 分鐘內徹底解決。