端末の出力に、コーディングシステムcodingを使用します(set-terminal-coding-system
)。
キーボード入力に、コーディングシステムcodingを使用します(set-keyboard-coding-system
)。
コマンドC-x RET t
(set-terminal-coding-system
)は、端末出力のためのコーディングシステムを指定します。端末出力の文字コードを指定した場合、端末へのすべての文字出力は、指定したコーディングシステムに変換されます。
この機能は、特定の言語または文字セットをサポートするようビルドされた、特定の文字端末で有用です — たとえばEuropean端末は、ISO Latin文字セットの1つをサポートします。マルチバイトテキストを使う場合は、端末のコーディングシステムを指定する必要があります。これにより、Emacsは端末が実際にどの文字を処理できるのか知ることができます。
デフォルトでは、Emacsが端末タイプまたはlocale指定により、正しいコーディングシステムを推論できない場合、端末への出力は変換されません。
コマンドC-x RET k
(set-keyboard-coding-system
)、または変数keyboard-coding-system
は、キーボード入力のためのコーディングシステムを指定します。キーボード入力の文字コード変換は、非ASCIIのグラフィック文字を送信するキーをもつ端末で有用です
— たとえば、いくつかの端末はISO Latin-1、またはそれのサブセットのためにデザインされています。
デフォルトでは、キーボード入力はシステムのlocale設定にもとづいて変換されます。端末がlocaleにより暗に指定されるエンコードを実際にはサポートしない場合(たとえば、M-iをタイプしたときに非ASCII文字が挿入されるのに気づいたとき)、エンコーディングをオフにするためにkeyboard-coding-system
をnil
にセットする必要があるでしょう。これは、
(set-keyboard-coding-system nil)
をinitファイルに記述することにより、行うことができます。
MS-Windowsでは古いWindows
9Xシステムを除きkeyboard-coding-system
をセットしても効果はないので、エンコードはMS-Windowsコンソールのカレントコードページにマッチしなければなりませんが、これはw32-set-console-codepage
の呼び出しによって変更できます。
キーボード入力にたいするコーディングシステムを使用した変換と、インプットメソッドの使用は似通った点があります。これらは両方ともキーボード入力シーケンスを1つの文字に変換します。しかし、インプットメソッドは人間により対話的に使用されることが便利なようにデザインされており、通常はASCIIのプリント文字のシーケンスが、変換されたシーケンスになります。通常、コーディングシステムは非グラフィック文字のシーケンスを変換します。