端末出力にはコーディングシステム coding を使用してください (set-terminal-coding-system)。
キーボード入力にはコーディングシステム coding (set-keyboard-coding-system) を使用してください。
コマンド C-x RET t (set-terminal-coding-system)
は、端末出力用の符号化方式を指定します。端末出力用に文字コードを指定すると、端末に出力されるすべての文字がその符号化方式に変換されます。
この機能は、特定の言語や文字セットをサポートするために設計された一部の文字専用ターミナル(例えば、ISOラテン文字セットのいずれかをサポートする欧州のターミナルなど)で有用です。マルチバイトテキストを使用する際は、ターミナルが実際にどの文字を扱えるかをEmacsが認識できるよう、ターミナルの符号化方式を指定する必要があります。
デフォルトでは、Emacsがターミナルの種類やロケール指定から適切なコーディングシステムを推論できる場合(言語環境を参照)を除き、ターミナルへの出力は一切変換されません。
コマンド C-x RET k (set-keyboard-coding-system) または変数 keyboard-coding-system
は、キーボード入力の符号化方式を指定します。キーボード入力の文字コード変換は、ASCII
以外のグラフィック文字を送信するキーを備えた端末(例えば、ISO Latin-1 またはそのサブセット向けに設計された一部の端末)において有用です。
デフォルトでは、キーボード入力はシステムのロケール設定に基づいて変換されます。ターミナルがロケールで想定されるエンコーディングを実際にはサポートしていない場合(例えば、M-i と入力した際に ASCII
以外の文字が挿入される場合など)、エンコーディングを無効にするには keyboard-coding-system を nil
に設定する必要があります。これは、次のように記述することで行えます。
(set-keyboard-coding-system nil)
initファイルに。
keyboard-coding-system の設定は MS-Windows
には影響しませんが、古い Windows 9X システムでは例外となります。その場合、エンコーディングを MS-Windows
コンソールの現在のコードページに合わせる必要があり、これは w32-set-console-codepage を呼び出すことで変更できます。
キーボード入力に符号化方式の変換を用いることと、入力メソッドを用いることには共通点がある。どちらも、単一の文字に変換されるキーボード入力のシーケンスを定義する点である。しかし、入力メソッドは人間が対話的に利用する際に便利になるよう設計されており、変換されるシーケンスは通常、ASCII印字文字のシーケンスである。一方、符号化方式は通常、非グラフィック文字のシーケンスを変換する。