萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 桌面中文亂碼完整解決方案:SSH、終端機、Vim、TTY、U盤、檔案編碼轉換

中文亂碼源於編碼不一致(Locale、終端機模擬器、檔案實際編碼、檔案系統掛載參數)。本文分類七大常見場景並給出標準解法。

1. SSH/Telnet 遠端登入亂碼

  • 伺服器 locale 檢查 LANG=zh_TW.UTF-8 或 en_US.UTF-8。
  • 客戶端(SecureCRT/PuTTY/Windows Terminal)設定 **字元編碼 = UTF-8**。
  • 兩端編碼必須一致。

2. 圖形終端機(GNOME Terminal/Konsole)亂碼

  • 終端機選單 → **Set Character Encoding** → 選 UTF-8。
  • 環境變數 LANG=zh_TW.UTF-8(或 en_US.UTF-8)。

3. Vim 顯示亂碼

  • 檔案實際編碼 ≠ Vim 偵測編碼。:set fileencoding? 查看,:set fileencoding=utf-8 強制重讀。
  • ~/.vimrc 設定預設編碼優先順序:
set encoding=utf-8
set fileencodings=ucs-bom,utf-8,cp950,big5,euc-jp,latin1

4. TTY 文字模式中文

  • 安裝 zhcon(框架緩衝中文控制台)或 fbterm + fcitx-fbterm。
  • systemd 服務啟動 fbterm@tty1.service。

5. man 頁重導向產生亂碼

man iptables | col -b > iptables.txt

col -b 過濾倒退鍵/底線等控制字元。

6. Windows (GBK/Big5) 檔案在 Linux (UTF-8) 顯示亂碼

iconv -f cp950 -t utf-8 source.txt > target.txt   # 繁體 Big5
iconv -f gbk -t utf-8 source.txt > target.txt     # 簡體 GBK
# 批次轉換
find . -name '*.txt' -exec sh -c 'iconv -f cp950 -t utf-8 "$1" > "$1.utf8" && mv "$1.utf8" "$1"' _ {} \;

7. 掛載 USB/FAT32/NTFS 中文檔名亂碼

# FAT32
mount -o iocharset=utf8,codepage=950 /dev/sdb1 /mnt/usb
# NTFS (ntfs-3g)
mount -t ntfs-3g -o iocharset=utf8 /dev/sdb1 /mnt/usb
# /etc/fstab 永久
UUID=xxxx  /mnt/usb  ntfs-3g  defaults,iocharset=utf8  0 0

排查檢查清單

  1. locale / locale -a 確認系統支援語系。
  2. echo $LANG $LC_ALL 確認環境變數。
  3. file -bi filename 判斷檔案實際 MIME/編碼。
  4. 終端機/SSH 客戶端編碼設定一致。
copyright © 萬盛學電腦網 all rights reserved