Next: , Previous: Recognize Coding, Up: International


16.9 コーディングシステムの指定

Emacsが自動的に正しいコーディングシステムを選択しない場合には、 コーディングシステムを指定するつぎのコマンドを使用できます。

C-x <RET> f coding <RET>
カレントバッファに訪問したファイルに コーディングシステムcodingを使う。
C-x <RET> c coding <RET>
このコマンドの直後に続くコマンドに対して コーディングシステムcodingを指定する。
C-x <RET> k coding <RET>
キーボード入力に対してコーディングシステムcodingを使用する。
C-x <RET> t coding <RET>
端末出力に対してコーディングシステムcodingを使用する。
C-x <RET> p input-coding <RET> output-coding <RET>
カレントバッファでのサブプロセスの入力と出力に コーディングシステムinput-codingoutput-codingを使用する。
C-x <RET> x coding <RET>
ウィンドウシステムを介した他のプログラムとのセレクションの交換には、 コーディングシステムcodingを使用する。
C-x <RET> X coding <RET>
ウィンドウシステムで1つのセレクションの交換には、 コーディングシステムcodingを使用する。

コマンドC-x <RET> fset-buffer-file-coding-system)は カレントバッファに対してファイルコーディングシステムを指定します。 いいかえれば、訪問したファイルを保存したりふたたび読む込むときに 使うコーディングシステムです。 コーディングシステムはミニバッファを使って指定します。 このコマンドは、すでに訪問したファイルに作用するので、 ファイルを保存するときにしか影響しません。

ファイルに対するコーディングシステムを指定する別の方法は、 ファイルを訪問するときです。 まずコマンドC-x <RET> cuniversal-coding-system-argument)を使います。 このコマンドは、ミニバッファを使ってコーディングシステム名を読みます。 ミニバッファを出たあと、 直後のコマンドに対して指定したコーディングシステムが使用されます。

ですから、たとえば、その直後のコマンドがC-x C-fならば、 そのコーディングシステムを使ってファイルを読みます (そして、ファイルを保存するときのために そのコーディングシステムを記録します)。 あるいは、その直後のコマンドがC-x C-wならば、 そのコーディングシステムを使ってファイルに書きます。 コーディングシステムを指定することで、影響される他のファイルコマンドは、 C-x C-iC-x C-v、および、 別のウィンドウを使うC-x C-fの変形です。

C-x <RET> cは、M-x shell(see Shell)を含む サブプロセスを開始するコマンドにも影響します。

しかしながら、その直後のコマンドがコーディングシステムを使用しないなら、 C-x <RET> cは最終的には何の効果もありません。

ファイルを変換しないで訪問するもっとも簡単な方法は、 M-x find-file-literallyコマンドです。 See Visiting

変数default-buffer-file-coding-systemは、 新しいファイルを作成するときのコーディングシステムの選択を指定します。 この変数は、新規作成のファイルを訪問するとき、あるいは、 バッファを作成してそれをファイルに保存するときに適用されます。 言語環境を選択すると、典型的には、 言語環境に対して最適のデフォルトのコーディングシステムを この変数に設定します。

コマンドC-x <RET> tset-terminal-coding-system)は 端末出力に対するコーディングシステムを指定します。 端末出力のコーディングシステムを指定すると、 端末へのすべての文字出力はそのコーディングシステムに翻訳されます。

この機能は、特定の言語や文字集合向けに作られたある種の文字端末には便利です。 たとえば、ISO Latin 文字集合の1つを扱えるヨーロッパの端末です。 マルチバイトテキストを使っているときには、 Emacsが端末で実際に扱える文字を知るために、 端末コーディングシステムを指定する必要があります。

Emacsがあなたの端末の正しいコーディングシステムを推測できない限り、 デフォルトでは、端末出力はまったく変換しません。

コマンドC-x <RET> kset-keyboard-coding-system)は キーボード入力に対するコーディングシステムを指定します。 キーボードから入力した文字コードの変換は、 非ASCII図形文字を送出するキーを有する端末には便利です。 たとえば、いくつかの端末は、ISO Latin-1やその部分集合向けに設計されています。

デフォルトでは、キーボード入力はまったく変換しません。

コーディングシステムを使用してキーボード入力を変換することと、 入力方式の使用には似たところがあります。 どちらも、1つの文字に変換するキーボード入力列を定義しています。 しかしながら、入力方式は人が対話的に使用するのに便利なように設計されていて、 変換される列は典型的にはASCII印字文字の列です。 コーディングシステムは、典型的には非図形文字の列を変換します。

コマンドC-x <RET> xset-selection-coding-system)は、 選択されたテキストをウィンドウシステムへ送るとき、および、 他のアプリケーションで作られたセレクションのテキストを受け取るときの コーディングシステムを指定します。 このコマンドは、再設定しない限り、以降のすべてのセレクションに作用します。 コマンドC-x <RET> Xset-next-selection-coding-system)は、 Emacsが作る/読むつぎのセレクションのコーディングシステムを指定します。

コマンドC-x <RET> pset-buffer-process-coding-system)は、 サブプロセスの入出力に対するコーディングシステムを指定します。 このコマンドはカレントバッファに作用します。 通常、各サブプロセスはそれ自身のバッファを持ちます。 ですから、各サブプロセスの入出力の変換を指定するには、 対応するバッファでこのコマンドを使用します。

デフォルトでは、プロセスの入出力はまったく変換しません。

変数file-name-coding-systemは、 ファイル名を符号化するためのコーディングシステムを指定します。 この変数に(Lispシンボルや文字列で)コーディングシステム名を設定すると、 Emacsは、すべてのファイル操作に対してそのコーディングシステムを 使ってファイル名を符号化します。 これは、ファイル名に非ASCII文字を使うことを可能にしています。 あるいは、少なくとも、指定したコーディングシステムで符号化できる 非ASCII文字を使えるはずです。

file-name-coding-systemnilならば、 Emacsは、選択されている言語環境で決まるデフォルトのコーディングシステムを 使います。 デフォルトの言語環境では、 ファイル名の中の非ASCII文字は特別に符号化しません。 Emacsの内部表現でファイルシステム上に現れます。

警告: Emacsセッションの途中でfile-name-coding-system (や言語環境)を変更すると、問題となる場合があります。 つまり、それまでのコーディングシステムで符号化された名前のファイルを すでに訪問していて、新しいコーディングシステムではその名前を 符号化できない(あるいは異なって符号化される)ときです。 そのようなバッファを訪問先ファイル名で保存しようとすると、 まちがった名前のファイルに保存されるか、エラーになります。 そのような問題が発生した場合には、 C-x C-wを使って、 そのバッファに新しいファイル名を指定します。