Next: , Previous: Default Coding Systems, Up: Coding Systems


32.10.6 1つの操作向けにコーディングシステムを指定する

変数coding-system-for-readと/やcoding-system-for-writeを 束縛することで、特定の1つの操作向けのコーディングシステムを指定できます。

— Variable: coding-system-for-read

この変数がnil以外であると、 ファイルを読むときや同期プロセスからの入力に用いる コーディングシステムを指定する。

これは非同期プロセスやネットワークストリームにも適用されるが、 異なった方法で適用される。 サブプロセスを開始したりネットワークストリームを開いたときの coding-system-for-readの値は、 そのサブプロセスやネットワークストリームの入力の復号化方法を指定する。 変更されない限り、そのサブプロセスやネットワークストリームに 対して使われ続ける。

この変数の正しい使い方は、特定の入出力操作に対して letで束縛することである。 そのグローバルな値は通常はnilであり、 グローバルにこれ以外の値を設定するべきではない。 この変数の正しい使い方の例をつぎに示す。

          
          
          ;; 文字コード変換せずにファイルから読む
          ;; crlfが行末を表すと仮定する
          (let ((coding-system-for-write 'emacs-mule-dos))
            (insert-file-contents filename))

その値がnil以外であると、 coding-system-for-readは、 file-coding-system-alistprocess-coding-system-alistnetwork-coding-system-alist、 を含めて入力に用いるコーディングシステムの 他のすべての指定方法に優先する。

— Variable: coding-system-for-write

これはcoding-system-for-readと同様に働くが、 入力ではなく出力に適用される点が異なる。 ファイル、サブプロセス、ネットワーク接続へ書くことに影響する。

call-process-regionstart-processのように、 1つの操作で入力と出力を行うときには、 coding-system-for-readcoding-system-for-writeの 両方が影響する。

— Variable: inhibit-eol-conversion

この変数がnil以外であると、 コーディングシステムでなにが指定されていようと行末変換を行わない。 これは、Emacsの入出力とサブプロセスのすべての基本関数、 明示的な符号化/復号化関数(see Explicit Encoding)に適用される。