Pages

Wednesday, August 22, 2007

在 Big5 環境編輯 UTF-8 編碼的檔案

裝起 emacs 快一年了,這期間斷斷續續使用,一直只會基本操作。為了習慣操作方式,我甚至連 Visual Studio 的編輯器都改成 emacs-like key-binding,但在 linux console 時大部份時間還是回到熟悉的 vim 環境,其中一個原因就是找不到自動轉換編碼的設定...

我現在遇到中文檔案都盡量以 UTF-8 編碼來儲存,但有時候我會在 Big5 terminal 作業,想同時編輯文件時就會造成很大的困擾。比較簡單的方式是透過 screen 來轉碼,但是我試用的結果是常常回到其他 Big5 視窗就會爛掉。在 vim 中,可以透過 tenc=big5:enc=utf8:fenc=utf8 這樣的設定來達成我想要的效果,但在 emacs 中試了好久都無法成功,網路上搜尋了一下也沒看到跟我有一樣需求的人。今天狠下心翻了幾頁文件,測試幾個函式後總算有一點初步的成果了,目前 .emacs 中相關的設定是:

(set-terminal-coding-system 'chinese-big5) (set-keyboard-coding-system 'chinese-big5) (set-language-environment 'chinese-big5) (set-selection-coding-system 'utf-8) (set-buffer-file-coding-system 'utf-8) (set-clipboard-coding-system 'utf-8) (set-next-selection-coding-system 'utf-8)
其中 keyboard-coding 不設成 Big5 的話,只要一輸入中文就會讓 emacs 停住不動,只能 kill 了。

目前在 emacs 22.1 下測試是正常的,但只要一開新檔案再存檔,又會存成 Big5。解決的方法是第一次存檔前先呼叫一次 set-buffer-file-coding-system,設定成 UTF-8 後再存檔,往後編輯或存檔就不用再做這個動作了,而且用 emacs-wiki 或 muse 時都可以正確 publish 成 UTF-8 的 HTML 或 LaTeX 檔。

初步驗證可以做到這個功能後,找個時間再研究看看怎麼讓 terminal coding 的設定值根據 locale 自動調整,這樣我在不同 locale 環境切換就更方便了。(我記得 vim 也可以設定成參考 locale,但忘了怎麼做@@)


This article was originally posted on this site.

No comments:

Post a Comment