Emacs 20以降は多国語化されています。
しかしその反面、Mule関連の書籍で紹介されている文字コード変換系列のキーバインドやコマンドが軒並み使えなくなってます。
正確にはキーバインドやコマンド名が変更されています。
よく使うものについて簡単に紹介します。
まず「今どの文字コードを使用しているか」の確認です。
モード行右下に "EE-" や "EEE" と表示されている部分(C-x C-b のバッファ一覧ではEEJになったり)が、左から順に
を表しています。
"E" なら euc-jp , "S" なら shift_jis を意味します。
各文字コードを変更するには、以下のキーバインドを使います。
C-x RET l set-language-environment C-x RET c universal-coding-system-argument C-x RET C-\ set-input-method C-x RET X set-next-selection-coding-system C-x RET x set-selection-coding-system C-x RET p set-buffer-process-coding-system C-x RET k set-keyboard-coding-system C-x RET t set-terminal-coding-system C-x RET f set-buffer-file-coding-system
通常は最後の3つを使います。この3つはinternational/muleパッケージに属していて、Emacs由来とmule由来が混ざっています。
1.バッファファイルの読み書き(mode-lilne:X+Terminal)
取得:変数 buffer-file-coding-system(emacs由来)
設定:buffer-file-coding-systemを直接変更するか、set-buffer-file-coding-system関数(mule由来)で変更する。
キー:C-x RET b
2.キーボード入力(mode-line:Terminalのみ)
取得:関数keyboard-coding-system(mule由来)
設定:set-keyboard-coding-system(mule由来)
キー:C-x RET k
補足:これはencoded-kbd-mode (minor) が有効になっている必要がある。
3.端末入出力(mode-line:Terminalのみ)
取得:関数terminal-coding-system(emacs由来)
設定:set-terminal-coding-system(mule由来)
キー:C-x RET t
補足:set-terminal-coding-system内では結局、set-terminal-coding-system-internal関数(emacs由来)を起動している。
整理すると、X上でのファイルとバッファの文字コードを指定したい場合は
C-x RET f set-buffer-file-coding-system
を使います。
ターミナルから使っていて、キーボード入力と画面出力の文字コードを設定したい場合は
C-x RET k set-keyboard-coding-system C-x RET t set-terminal-coding-system
を使います。
文字コード周りはGoogleで調べると色々先達の苦労を知ることができますので、詳しくはそちら。