Emacs
zip

Emacsで日本語ファイル名を含むzipファイルを開く方法

Debian GNU/Linux Stretch で利用できる unzip コマンドはいまだに、日本語ファイル名を含む zip ファイルを解凍すると文字化けします1。しかし、unzip コマンドの代わりに unar コマンドを使うようにすれば、CLI 環境では手軽に文字化けを回避できます。

問題は、Emacs 上から archive-mode で圧縮ファイルを参照する場合の対応です。これも unzip コマンドの代わりに unar コマンドを利用すれば良いわけですが、正攻法で archive-zip-extract 変数に unar コマンドを設定する方法ではうまくいきません。

その代わりに、単に zip ファイルも rar ファイルであると見なすように設定すれば、unzip コマンドの代わりに unar コマンドを使ってくれるようになります。具体的には、~/.emacs に以下のコードを記述してください。

(require 'nadvice)
(defun my-archive-find-type (type)
  (if (eq type 'zip) 'rar type))
(advice-add 'archive-find-type :filter-return 'my-archive-find-type)

  1. Ubuntu で利用できる unzip コマンドは、日本語ファイル名を扱うためのパッチが適用されていて、文字化けしません。ですから、Ubuntu Natty の unzip パッケージを Debian Squeeze で使う手法を利用すれば、CLI で unzip コマンドを利用する場合には文字化けを避けることができます。実際、私個人も、この手法を利用していた時期があります。ただ、多数の Debian マシンを管理している立場では、この手法を忘れずに実施することそのものが面倒で、最近は使わなくなりました。