GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/emacs/File-Name-Coding.html ・ emacs-doc.conao3.com

24.11 ファイル名の符号化方式

C-x RET F coding RET

ファイル名(set-file-name-coding-system)のエンコードおよびデコードには、コーディングシステム coding を使用してください。

コマンド C-x RET F (set-file-name-coding-system) は、ファイルの名前のエンコードに使用する符号化方式を指定します。ファイルの内容の読み書きには影響しません。

実際には、このコマンドが行うのは変数 file-name-coding-system の値を設定することだけです。変数にコーディングシステム名(Lispシンボルまたは文字列として)を設定すると、Emacs はすべてのファイル操作において、そのコーディングシステムを用いてファイル名をエンコードします。これにより、ファイル名に非ASCII文字――あるいは、少なくとも指定したコーディングシステムでエンコード可能な非ASCII文字――を使用することが可能になります。

file-name-coding-system が nil の場合、Emacs は選択された言語環境によって決定され、default-file-name-coding-system 変数に格納されているデフォルトのコーディングシステム(通常は UTF-8)を使用します。

NT系を派生したMS-Windowsバージョン(Windows 2000、XP、およびそれ以降のすべてのバージョン)でEmacsを実行する場合、EmacsはデフォルトでUnicodeファイル名を直接渡せるAPIを使用するため、file-name-coding-systemの値はほぼ無視されます。対照的に、Windows 9Xではファイル名はfile-name-coding-systemを用いてエンコードされており、この値は現在のシステムロケールに対応するコードページ(コードページを参照)に設定する必要があります。変数w32-unicode-filenamesの値は、Emacsがファイル名を受け付けるOS関数を呼び出す際にUnicode APIを使用するかどうかを制御します。この変数は、起動コードによってWindows 9Xではnilに、より新しいバージョンのMS-Windowsではtに設定されます。

警告: Emacs セッションの途中で file-name-coding-system(または言語環境)を変更した場合、以前のコーディングシステムでエンコードされており、新しいコーディングシステムではエンコードできない(あるいは異なる方法でエンコードされる)ファイル名のファイルを既に訪問していると、問題が発生することがあります。これらのバッファのいずれかを訪問済みのファイル名で保存しようとすると、誤ったファイル名が使用されたり、エラーが発生したりすることがあります。このような問題が発生した場合は、C-x C-w を使用してそのバッファに新しいファイル名を指定してください。

ファイル名のエンコード時に誤りが生じた場合は、M-x recode-file-name コマンドを使用してファイル名の符号化方式を変更してください。このコマンドでは、既存のファイル名、その元の符号化方式、および変換先の符号化方式の入力が求められます。