次: , 前: Coding System Basics, 上: Coding Systems


32.10.2 符号化と入出力

コーディングシステムの主目的は、ファイルの読み書きに使うことです。 関数insert-file-contentsはファイルのデータを復号化するために コーディングシステムを使い、 write-regionはバッファ内容を符号化するために コーディングシステムを使います。

使用するコーディングシステムを明示する(see Specifying Coding Systems) こともできるし、 デフォルトの機構(see Default Coding Systems)を暗に使うこともできます。 しかし、これらの方式ではすべきことを完全に指定しきれないこともあります。 たとえば、undefinedのようなコーディングシステムを選んで、 データに基づいて文字コード変換を行うようにするかもしれません。 そのような場合、コーディングシステムの選択は 入出力操作によって完了します。 しばしば、選択されたコーディングシステムをあとで知りたくなります。

— 変数: buffer-file-coding-system

この変数は、カレントバッファで訪問するときに使用した コーディングシステムを記録する。 これは、バッファを保存したり、 write-regionでバッファの一部を書くときに使われる。 これらの操作において、ユーザーに別のコーディングシステムを指定するように 問い合わせた場合には、buffer-file-coding-systemは 指定された別のコーディングシステムに更新される。

— 変数: save-buffer-coding-system

この変数は、write-regionには使わないが、 バッファを保存するために使うコーディングシステムを指定する。 バッファを保存する際に、ユーザーに別のコーディングシステムを指定するように 問い合わせ、かつ、save-buffer-coding-systemを用いている場合には、 これは指定された別のコーディングシステムに更新される。

— 変数: last-coding-system-used

ファイルやサブプロセスに対する入出力操作では、 使用したコーディングシステム名をこの変数に設定する。 明示的に符号化/復号化する関数(see Explicit Encoding)も この変数に設定する。

警告: サブプロセスから出力を受け取るとこの変数が設定されるため、 Emacsが待つたびに変化する可能性がある。 したがって、読者の興味がある値を保存するような関数を呼び出した直後に その値をコピーして使うこと。

変数selection-coding-systemは、 ウィンドウシステムのセレクションを符号化する方法を指定します。 See Window System Selections