Emacs とコーディングシステム
cp932
なファイルを修正しなくてはならなくて、Emacs から保存したら UTF-8
になってしまった。
これでは困るので、腰を上げてコーディングシステムについて調べた。
以下のとおりに理解した。
- Emacs は指定した言語環境について、いくつかのコーディングシステムを持っている。
- Emacs はコーディングシステムを順番に試して、文字コードの判定を行う。
prefer-coding-system
で、指定したコーディングシステムを再優先にできる。(coding-system-priority-list)
を評価すると、現在の優先度がわかる。
- コーディングシステムが決まると、それをバッファローカル変数
buffer-file-coding-system
に設定する。UTF-8
のファイルを開いたらutf-8
が設定されるし、cp932
のファイルならcp932
が設定されるはず。
- Emacs は
buffer-file-coding-system
を利用してファイルへの書き出しをおこなう。- 別なコーディングシステムを使いたいときは
save-buffer-file-coding-system
を設定すれば、そちらが優先される。
- 別なコーディングシステムを使いたいときは
なるほど自分の init.el
には以下のような設定がしてあった。
(setq save-buffer-coding-system 'utf-8-unix)
これでは必ず UTF-8 (LF)
で保存されることになってしまうので、この設定は削除した。
そのほかいろいろ設定していたが、結局以下の設定に落ち着いた。
(set-language-environment "Japanese") (prefer-coding-system 'utf-8)