萬盛學電腦網

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

Windows 檔案在 Ubuntu 顯示亂碼?Vim 編碼自動偵測設定 (GBK/UTF-8 雙支援)

Windows 預設編碼 GBK/GB2312/CP936,Linux 預設 UTF-8,跨平台開啟含中文註解的原始碼常出現亂碼。本文教你配置 Vim fileencodings 自動偵測編碼,徹底解決亂碼困擾。

Vim 編碼設定

亂碼根本原因

  • Windows 簡體中文環境:預設儲存為 **GBK (CP936)**
  • Linux/Ubuntu:預設開啟為 **UTF-8**
  • GBK 中文字元在 UTF-8 下解碼 → 亂碼 ( 或 亂碼字)

解決方案:配置 ~/.vimrc 自動偵測編碼優先序


# 1. 安裝 vim (若未安裝)
sudo apt-get install vim

# 2. 編輯用戶設定檔
vim ~/.vimrc

寫入以下設定 (逐行說明)


" 基本顯示設定
set number              " 顯示行號
syntax on               " 語法高亮
set showmode            " 左下角顯示模式
set autoindent          " 自動縮排

" === 核心:編碼自動偵測優先序 ===
" 依序嘗試:UTF-8 → UCS-BOM → GB18030 → GBK → GB2312 → CP936
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

" 終端機輸出編碼
set termencoding=utf-8

" Vim 內部編碼 (建議統一 UTF-8)
set encoding=utf-8

參數詳細說明

參數功能設定值解析
fileencodings讀取檔案時**嘗試的編碼順序** (逗號分隔)優先 UTF-8,其次含 BOM 的 UCS,再來中文常用 GB 系列
termencoding終端機輸出編碼設為 UTF-8 配合現代終端機
encodingVim 內部記憶體編碼統一 UTF-8,支援多語言混雜
fileencoding**寫入檔案時**使用的編碼若需輸出 GBK:set fileencoding=gbk 存檔前手動設定

驗證效果


# 建立 GBK 編碼測試檔 (在 Windows 或用 iconv)
echo "測試中文" | iconv -f utf-8 -t gbk > test_gbk.txt

# Ubuntu Vim 開啟
vim test_gbk.txt
# 左下角應顯示 [gbk] 或 [cp936],中文正常顯示

進階:強制指定編碼開啟/存檔


# 強制以 GBK 開啟
vim -c 'e ++enc=gbk' filename

# 另存為 UTF-8
:set fileencoding=utf-8
:w newfile.txt

# 另存為 GBK (給 Windows 同事)
:set fileencoding=gbk
:w win_file.txt

批次轉換專案編碼 (GBK → UTF-8)


# 安裝工具
sudo apt-get install convmv

# 遞歸轉換檔案內容編碼
find . -type f -name "*.java" -o -name "*.cpp" -o -name "*.h" | \
xargs -I{} sh -c 'iconv -f gbk -t utf-8 "$1" > "$1.tmp" && mv "$1.tmp" "$1"' _ {}

# 或使用 enca 自動偵測並轉換
sudo apt-get install enca
enconv -L zh_CN -x utf-8 *.java

其他編輯器設定參考

  • VS Code:files.encoding 設 autoDetect 或 gbk,底部狀態列可手動切換
  • Sublime Text:安裝 ConvertToUTF8 套件
  • IntelliJ IDEA:File → File Encoding → GBK (專案級) 或 IDE 預設 UTF-8

一次設定 fileencodings,Vim 即能智慧識別 Windows/Linux 檔案編碼,跨平台協作零亂碼。

copyright © 萬盛學電腦網 all rights reserved