Next: Communication Coding, Previous: Output Coding, Up: International [Contents][Index]
Emacsがファイル内容にたいして、自動的に正しいコーディングシステムを選択しない場合、コーディングシステムを指定するために、以下のコマンドを使用できます。
カレントバッファーのファイルを、コーディングシステムcodingを使って保存または再visitします(set-buffer-file-coding-system
)。
直後に続くコマンドのコーディングシステムにcodingを指定します(universal-coding-system-argument
).
コーディングシステムcodingを使って、現在のファイルを再visitします(revert-buffer-with-coding-system
)。
コーディングシステムwrongを使ってデコードされたリージョンを、かわりにコーディングシステムrightを使ってデコードします。
コマンドC-x RET f
(set-buffer-file-coding-system
)は、カレントバッファーのファイルのコーディングシステムをセットします(たとえばファイルを保存またはリバートするときに使うコーディングシステム)。これはミニバッファーを使ってコーディングシステムを指定します。モードラインのコーディングシステムインディケーターをmouse-3でクリックしても、このコマンドを呼び出すことができます。
バッファーのすべての文字を処理できないコーディングシステムを指定した場合、Emacsは問題となる文字について警告します。そしてそのバッファーを保存するときのコーディングシステムの選択を求めます。
このコマンドを、カレントバッファーのエンコーディングの際の改行変換の指示に使うこともできます(end-of-line conversionを参照してください)。たとえばC-x RET f dos RETは、カレントバッファーを、DOSスタイル(行末が改行復帰文字)で保存します。
ファイルにたいしてコーディングシステムを指定する他の方法は、ファイルをvisitするときに指定する方法です。最初にコマンドC-x
RET c
(universal-coding-system-argument
)を使います。このコマンドはミニバッファーを使ってコーディングシステムを読み取ります。ミニバッファーを抜けた後、その直後に続くコマンドに、指定したコーディングシステムが使用されます。
たとえば直後に続くコマンドがC-x C-fの場合、そのコーディングシステムを使ってファイルを読み込みます(そして後で保存するときのために、そのコーディングシステムを記録します)。直後に続くコマンドがC-x C-wの場合、そのコーディングシステムを使ってファイルを書き込みます。C-x RET fのかわりに、この方法で保存するときのコーディングシステムを指定した場合、バッファーにそのコーディングシステムが処理できない文字が含まれていても警告はされません。
C-x iやC-x C-v、同様にC-x C-fの別ウィンドウ版C-x RET cなど、その他のファイルコマンドも指定されたコーディングシステムに影響されます。そしてM-x shell (Shellを参照してください)を含む、サブプロセスを開始するコマンドも影響を受けます。直後に続くコマンドがコーディングシステムを使用しない場合、C-x RET cは何の影響も与えません。
変換をせずにファイルをvisitする簡単な方法は、M-x find-file-literallyコマンドです。Visitingを参照してください。
変数buffer-file-coding-system
のデフォルト値は、新しいファイルを作成するときに選択されるコーディングシステムを指定します。これは新しいファイルを作成するときや、バッファーを作成してそれをファイルに保存するときに適用されます。言語環境の選択は、この変数を言語環境にたいして適した、デフォルトのコーディングシステムにセットします。
間違ったコーディングシステムでファイルをvisitしたときは、C-x RET r
(revert-buffer-with-coding-system
)でこれを正すことができます。これは指定したコーディングシステムを使って、現在のファイルを再visitします。
テキストの一部が、すでに間違ったコーディングシステムでバッファーに挿入されてしまった場合、M-x recode-regionを使ってデコードしなおすことができます。これは正しいコーディングシステムと、実際に使われた間違ったコーディングシステムの入力を求め、変換を行います。最初にリージョンを間違ったコーディングシステムでエンコードして、その後で正しいコーディングシステムでデコードします。