PuTTY 作為 Windows 下最經典的 SSH 客戶端,預設字元集為 Latin-1,直接連接中文 Linux 環境易產生亂碼。本文整理三種主流情境:GBK/GB2312 傳統環境、UTF-8 現代環境、混合環境相容,提供完整設定步驟與常見坑點解析。
# /etc/sysconfig/i18n (RHEL/CentOS 6)
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
source /etc/sysconfig/i18n
# 或重新登入
export LC_ALL=zh_CN.gb18030
# 或
export LANG=zh_CN.GB2312
" ~/.vimrc
set encoding=utf-8
set fileencoding=utf-8
set fileencodings=utf-8,gb18030,gbk,gb2312,big5
# UTF-8 → GBK
iconv -f utf-8 -t gbk src.txt > dst.txt
# 批次轉換
find . -name "*.txt" -exec sh -c 'iconv -f utf-8 -t gbk "$1" > "$1.gbk"' _ {} \;
export LC_ALL=zh_CN.gb18030 再 ssh legacy-hostluit -encoding gbk ssh legacy-host 自動轉碼(需安裝 x11-utils)| 現象 | 可能原因 | 解決方向 |
|---|---|---|
| 方塊字/亂碼 | 字型缺少中文字符 | 換支援 CJK 的等寬字型 |
| 輸入法無法啟用 | PuTTY 未啟用 IME | Window → Translation → ☑ Enable IME |
| ls 顯示亂碼但 cat 正常 | 檔案名編碼與終端不一致 | convmv -f gbk -t utf-8 --notest * |
| vim 開啟檔案亂碼 | fileencoding 未偵測正確 | :e ++enc=gbk 強制重讀 |
建立 Default Settings 統一字型、字元集、Keepalive(Seconds between keepalives: 30)、Terminal → Keyboard → The Function keys and keypad: Linux,後續新增 Session 僅需修改 Host Name 即可。
掌握上述設定,即可在 GBK 舊世代與 UTF-8 新世界間自由穿梭,徹底告別 PuTTY 中文亂碼困擾。