VIM 編輯器顯示萬國碼(Unicode)文字,解決亂碼問題

這裡介紹如何設定 Vim 編輯器使用 UTF8 編碼,解決中文字出現亂碼的問題。

現在許多的文字資料都會以萬國碼(Unicode)的方式來編碼,尤其是在包含中文的文字檔時,UTF8 是最常見的編碼格式,而在使用 Vim 開啟這類的文字檔案時,如果預設的編碼不是 UTF8,中文的部分就會跑出亂碼,以下教大家如何設定 Vim 來解決這個問題。


就我個人而言,都是習慣使用 Vim 來寫程式,偶而會在程式碼中放一些中文註解,Vim 沒有設定好編碼的話,就會像這樣出現一堆亂碼。

vim-encoding-1

Vim 呈現亂碼

這時候可以更改 encoding 這個設定,它可用來指定 Vim 內部對於文字編碼方式:

set encoding=utf8

另外 fileencoding 是用來設定特定檔案的編碼,使用 setglobal 可以設定它的預設值。

setglobal fileencoding=utf-8

fileencoding 若設定為空字串則表示跟 encoding 所指定的編碼方式相同。

如果要立即更改 Vim 的設定,可直接使用在指令列命令模式(command-line mode)設定 fileencoding

vim-encoding-2

更改 Vim 的編碼

通常這樣應該就可以正常顯示中文了。

vim-encoding-3

Vim 顯示 UTF8 編碼文字

如果要讓 Vim 自動可以處理這個問題,可以將這段程式碼貼進 vimrc 檔案中:

if has("multi_byte")
  if &termencoding == ""
    let &termencoding = &encoding
  endif
  set encoding=utf-8
  setglobal fileencoding=utf-8
  "setglobal bomb
  set fileencodings=ucs-bom,utf-8,latin1
endif

這樣以後使用 Vim 編輯中文的文字,就不會有亂碼了。

參考資料:wikia

技巧

2 留言

  1. mm

    高手您好
    我最近剛從 windows十幾年折磨脫離到 linux
    linux mint 19 用得蠻開心的, 不排斥自學與問題排除,不過還真不容易
    (一開始連中文輸入都搞了半天)
    您的網站讓我解決了很多問題 真心感謝

    唯一一個的亂碼問題,不知道有沒有比較一勞永逸的方法?
    (我 language support 裡該裝語言的都裝了)
    工作原因需要中文日文英文, 預設界面理想為英文
    舊檔案裡檔名倒還其次 (大部分正常顯示)
    文字檔裡全部都變為磚塊碼
    我有查到 iconv 等轉碼指令,但若同一檔案中同時有中文日文?

    二為 windows 裡的一些小遊戲程式等,
    用 wine 等方法成功執行了之後,
    視窗界面上都還是磚塊的問題

    真心感謝!!

    • G. T. Wang

      文字編碼問題大概沒有什麼一勞永逸的方法,原則上就是猜猜看原本的編碼是什麼,然後想辦法用 iconv 轉成 UTF-8,中日文夾雜的文字有可能是 Big5 編碼,您可以試試看。

      但若是遇到自己造字的文字,iconv 也是轉不出來,大概只能手動修,或是寫程式修。

      遊戲裡面的文字大概也是這種狀況,不過那個牽涉到 wine 與遊戲程式本身,又更複雜,我自己是盡量避免這種使用方式。

Comments are Closed