My開発メモ

Ubuntuでzipファイルを解凍すると文字化けした(Shift_JIS対策)

Windowsで作成されたzipファイルをLinuxで解凍すると、

$ unzip sample.zip

ファイル名やフォルダ名に日本語が使われていると、
文字化けする。

ネットで調べると、次のようにやればよいというアドバイスを見かける。

$ unzip -O sjis sample.zip

ところが、実際にやってみると、そのようなオプションはない。

そこで、更に調べると、次のように unar というアプリを
インストールする方法があった。

$ sudo apt install unar
$ unar -e Shift_JIS XXXXX.zip

これでうまくいったが、なぜ unzip でそのオプションがなかったんだろう?

僕の unzip のバージョン

$ unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip/ ;
see ftp://ftp.info-zip.org/pub/infozip/UnZip.html for other sites.

Compiled with gcc 9.3.0 for Unix (Linux ELF) on Feb 23 2022.

UnZip special compilation options:
        COPYRIGHT_CLEAN (PKZIP 0.9x unreducing method not supported)
        SET_DIR_ATTRIB
        SYMLINKS (symbolic links supported, if RTL and file system permit)
        TIMESTAMP
        UNIXBACKUP
        USE_EF_UT_TIME
        USE_UNSHRINK (PKZIP/Zip 1.x unshrinking method supported)
        USE_DEFLATE64 (PKZIP 4.x Deflate64(tm) supported)
        MBCS-support (multibyte character support, MB_CUR_MAX = 6)
        VMS_TEXT_CONV
        [decryption, version 2.11 of 05 Jan 2007]

UnZip and ZipInfo environment options:
           UNZIP:  [none]
        UNZIPOPT:  [none]
         ZIPINFO:  [none]
      ZIPINFOOPT:  [none]

僕の Ubuntu にインストールされている unzip には -O オプションが組み込まれていなかった
んだろうなあ。

ただ、

$ zipinfo XXXX.zip

とすると、日本語が表示されたので、何かいい方法がありそうな予感がする。

原因がわかった

僕はどうやら、過去(2022年2月頃)に、Shift_JISなどの日本語ファイル名などがはいった
zipファイルを解凍するのに、unzip6.0のソースコードに日本語化パッチをあてて、
それをインストールしていたみたい。

それをアンインストールしたら、解決した。

$ sudo make uninstall
[sudo] se-ichi のパスワード: 
rm -f /usr/local/bin/funzip /usr/local/bin/unzip /usr/local/bin/unzipsfx /usr/local/bin/zipgrep /usr/local/bin/zipinfo /usr/local/man/man1/funzip.1 /usr/local/man/man1/unzip.1 /usr/local/man/man1/unzipsfx.1 /usr/local/man/man1/zipgrep.1 /usr/local/man/man1/zipinfo.1

このパッチをあてた unzip は /usr/local/bin にインストールされていた。
アンインストールしたら、/usr/bin に unzip がある。
この unzip には -O オプションがある。

それにしても、日本語対応のパッチをあてていたのに、対応できていなかったということは、
このパッチをあててもうまくいかなかったんだけど、そのままにしておいたということか。
自分のしたことながら、わけがわからん。
ドキュメントを残す必要を感じるなあ。

カテゴリー: memo, Ubuntu

タグ: unar, unzip, オプションがない, 文字化け

カウント: 22