Next: , Previous: , Up: Coding Systems   [Contents][Index]


33.10.6 単一の操作にたいするコーディングシステムの指定

変数coding-system-for-readおよび/またはcoding-system-for-writeをバインドすることにより、特定の操作にたいしてコーディングシステムを指定できます。

Variable: coding-system-for-read

この変数が非nilなら、それはファイルの読み込みや同期サブプロセスプロセスからの入力にたいして使用するコーディングシステムを指定する。

これは非同期サブプロセスやネットワークストリームにも適用されるが方法は異なる。サブプロセス開始時やネットワークストリームオープン時のcoding-system-for-readの値は、サブプロセスやネットワークストリームにたいして入力のデコードメソッドを指定する。そのサブプロセスやネットワークストリームにたいして、オーバーライドされるまでそれが使用され続ける。

特定のI/O操作にたいしてletでバインドするのがこの変数の正しい使い方である。この変数のグローバル値は常にnilであり、他の値にグローバルにセットするべきではない。以下はこの変数の正しい使用例:

;; 文字コード変換なしでファイルを読み込む
(let ((coding-system-for-read 'no-conversion))
  (insert-file-contents filename))

この変数の値が非nilのときはfile-coding-system-alistprocess-coding-system-alistnetwork-coding-system-alistを含む、入力にたいして使用するコーディングシステムを指定するすべてのメソッドよりこの変数が優先される。

Variable: coding-system-for-write

これはcoding-system-for-readと同じように機能するが、入力ではなく出力に適用される点が異なる。これはファイルへの書き込み、同様にサブプロセスやネットワークストリームへの出力の送信にも適用される。これはEmacsがサブプロセスを呼び出す際のコマンドライン引数のエンコーディングにも適用される。

単一の操作がcall-process-regionstart-processのように入力と出力の両方を行う際には、coding-system-for-readcoding-system-for-writeの両方がそれに影響する。

Variable: coding-system-require-warning

coding-system-for-writeに非nil値をバインドすることにより、select-safe-coding-system-functionが指定する関数の呼び出しによる出力プリミティブを抑制する(User-Chosen Coding Systemsを参照)。これはC-x RET c (universal-coding-system-argument)がcoding-system-for-writeをバインドすることにより機能して、かつEmacsはユーザーの選択にしたがう必要があるからである。Lispプログラムが書き込むテキストのエンコーディングに安全ではないかもしれない値をcoding-system-for-writeにバインドする場合には、coding-system-require-warningにも非nil値をバインドできる。これはたとえcoding-system-for-writeが非nilでもselect-safe-coding-system-functionの値の呼び出しによる出力プリミティブにエンコードのチェックを強制する。または指定されたエンコーディングを使用する前に、明示的にselect-safe-coding-systemを呼び出すこと。

User Option: inhibit-eol-conversion

この変数が非nilなら、どのコーディングシステムが指定されたかに関わらず行末変換は何も行われない。これはEmacsすべてのI/Oやサブプロセスにたいするプリミティブ、および明示的なエンコード関数(Explicit Encodingを参照)とデコード関数に適用される。

ある操作にたいして固定された1つのコーディングシステムではなく複数のコーディングシステムを選択する必要があることがあります。Emacsでは使用するコーディングシステムにたいして優先順位を指定できます。これはfind-coding-systems-region(Lisp and Coding Systemsを参照)のような関数によりリターンされるコーディングシステムのリストのソート順に影響します。

Function: coding-system-priority-list &optional highestp

この関数はコーディングシステムのカレント優先順にコーディングシステムのリストをリターンする。オプション引数highestpが非nilなら、それはもっとも高い優先度のコーディングシステムだけをリターンすることを意味する。

Function: set-coding-system-priority &rest coding-systems

この関数はコーディングシステムの優先リストの先頭にcoding-systemsを配置して、それらを他のコーディングシステムすべてより高い優先度とする。

Macro: with-coding-priority coding-systems &rest body…

このマクロはcoding-systemsをコーディングシステム優先リスト先頭に配置して、progn (prognを参照)が行うようにbodyを実行する。coding-systemsbody実行中に選択するコーディングシステムのリストであること。