Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 掛載 FAT32/NTFS U 盤中文亂碼徹底解決:iocharset 與 codepage 參數詳解

編輯:Linux 教學

前言

Linux 掛載 Windows 格式磁碟 (FAT32/NTFS) 時,中文檔名常因編碼不匹配顯示亂碼。核心在於正確指定 iocharset (核心內部編碼) 與 codepage (磁碟上儲存編碼)。本文提供完整掛載參數對照表、GNOME 圖形配置法與永久生效方案。

一、核心參數原理

參數含義常用值
iocharset核心將檔名轉換為的內部編碼 (VFS 層)utf8 (現代系統預設)
codepage磁碟上實際儲存的檔名編碼 (DOS/Windows 代碼頁)936 (GBK/GB2312), 950 (Big5), 437 (美英預設)

關鍵:中文 Windows 格式化的 FAT32 通常使用 CP936 (GBK) 儲存檔名,Linux 核心需 iocharset=utf8 正確轉換。

二、命令列掛載參數組合測試 (依序嘗試)

# 1. 最通用現代系統 (推薦首試)
mount -o iocharset=utf8 /dev/sdb1 /mnt/usb

# 2. 明確指定代碼頁 (中文 FAT32 標準)
mount -t vfat -o codepage=936,iocharset=utf8 /dev/sdb1 /mnt/usb

# 3. 僅指定 iocharset (舊核心相容)
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb

# 4. 繁體中文環境 (Big5 儲存)
mount -t vfat -o codepage=950,iocharset=utf8 /dev/sdb1 /mnt/usb

# 5. 強制 GB2312/GBK/GB18030 輸出 (特殊舊系統)
mount -t vfat -o codepage=936,iocharset=gb2312 /dev/sdb1 /mnt/usb
mount -t vfat -o codepage=936,iocharset=gbk /dev/sdb1 /mnt/usb
mount -t vfat -o codepage=936,iocharset=gb18030 /dev/sdb1 /mnt/usb

測試方法:掛載後 ls /mnt/usb 檢查中文檔名是否正常顯示。

三、GNOME 桌面環境圖形化永久配置

  1. 開啟 配置編輯器:
    終端執行 gconf-editor (GNOME 2) 或 dconf-editor (GNOME 3)。
  2. 導航路徑:
    /system/storage/default_options/vfat/mount_options (GNOME 2)
    或 org.gnome.desktop.media-handling.automount-options (GNOME 3)。
  3. 編輯鍵值,新增字串:iocharset=utf8。
  4. 套用後重新插入 U 盤,自動掛載即生效。

原理:GNOME 自動掛載守護進程 (gvfs/udisks) 讀取此配置作為預設 mount 選項。

四、永久生效:編輯 /etc/fstab (伺服器/無桌面環境)

/dev/sdb1  /mnt/usb  vfat  defaults,codepage=936,iocharset=utf8,umask=000  0  0
  • umask=000:所有用戶可讀寫 (FAT 無權限概念)。
  • 建議使用 UUID=xxxx-xxxx 替代 /dev/sdb1 避免裝置名漂移。

五、NTFS 磁碟特殊處理

# 需安裝 ntfs-3g
sudo apt-get install ntfs-3g

# 掛載 (ntfs-3g 預設支援 UTF-8,通常無需額外參數)
mount -t ntfs-3g -o defaults,umask=000 /dev/sdb1 /mnt/usb

# 如仍有亂碼 (極罕見)
mount -t ntfs-3g -o nls=utf8,umask=000 /dev/sdb1 /mnt/usb

ntfs-3g 使用 nls 參數而非 iocharset。

六、驗證編碼支援

# 查看核心支援的代碼頁
ls /lib/modules/$(uname -r)/kernel/fs/nls/

# 查看支援的字符集
iconv -l | grep -i utf

七、常見誤區

  • ❌ mount -o utf8 — vfat 不支援 utf8 選項,必須用 iocharset=utf8。
  • ❌ 混淆 codepage (磁碟端) 與 iocharset (核心端)。
  • ❌ NTFS 使用 vfat 參數 — 需用 ntfs-3g 並配合 nls。

結語

掌握 codepage=936,iocharset=utf8 黃金組合,配合 GNOME 配置編輯器或 /etc/fstab 永久化,即可徹底解決 Linux 下 FAT32 U 盤中文亂碼。現代發行版 (Ubuntu 18.04+, CentOS 7+) 預設已優化自動掛載編碼,手動干預場景大幅減少,但原理理解對排查邊緣案例仍不可或缺。

Copyright © Windows教程網 All Rights Reserved