home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Emacs/文字コード

Emacs/文字コード

Emacs / 文字コード
id: 357 所有者: msakamoto-sf    作成日: 2003-01-30 13:24:56
カテゴリ: Emacs 

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で調べると色々先達の苦労を知ることができますので、詳しくはそちら。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-04-26 16:01:56
md5:fc6ed6aa0205cf2264d4c0943cce6cb2
sha1:488c08d21281f9516ee6942729882410152be164
コメント
コメントを投稿するにはログインして下さい。