[FreeBSD-users-jp 96157] Re: zipアーカイブ中の日本語ファイル
丸山直昌
maruyama @ ism.ac.jp
2017年 11月 12日 (日) 09:13:21 UTC
丸山です。
やはり梅本さんのご指摘が正解でした。
ports で make するとメニューが現れてオプションを聞いてきますが、ここで
ICONV を on にしてインストールすると、出来上がった unzip では
[root @ samanta{1044}] /usr/ports/archivers/unzip# pkg info unzip
unzip-6.0_6
Name : unzip
Version : 6.0_6
Installed on : Sun Nov 12 17:03:38 2017 JST
Origin : archivers/unzip
Architecture : freebsd:10:x86:64
Prefix : /usr/local
Categories : archivers
Licenses : Info-ZIP
Maintainer : ehaupt @ FreeBSD.org
WWW : http://www.info-zip.org/UnZip.html
Comment : List, test, and extract compressed files from a ZIP archive
Options :
CHINESE : off
DOCS : on
ICONV : on
KOREAN : off
RUSSIAN : off
(以下略)
になり、その unzip では
unzip -O sjis -l xxx.zip | nkf -S -w
とか、 unzip -O sjis xxx.zip で展開後
From: "IIJIMA Hiromitsu" <delmonta @ dennougedougakkai-ndd.org>
Date: Sun, 12 Nov 2017 14:22:28 +0900
foreach f (*)
set g=`echo -n "$f" | nkf -Sw`
if ( "$f" ne "$g" ) then mv "$f" "$g"
end
などの手が使えます。要は
1. 配布されているパッケージでは ICONV が offとなっている
2. man unzip ではコンパイルオプションの ICONV にも -O オプションにも触れていない
の二つ落とし穴がある、という纏めになります。-O オプションの説明は、 ICONV on
でコンパイルした unzip では、パラメータ無しで起動したとき、
-O CHARSET specify a character encoding for DOS, Windows and OS/2 archives
-I CHARSET specify a character encoding for UNIX and other archives
と表示されるのでわかりますが、それ以外の箇所には説明は見当たりません。梅
本さんのお教えがなければ、わかりませんでした。感謝。
Sun, 12 Nov 2017 15:51:59 +0900
Hajimu UMEMOTO <ume @ mahoroba.org> writes:
>梅本です。
>
>>>> Sun, 12 Nov 2017 11:54:15 +0900 の刻に「maruyama」、すなわち
>>>> 丸山直昌 <maruyama @ ism.ac.jp> 氏曰く
>
>maruyama> るunzipを使って解凍してますが、日本語のファイル名のファイルは取り出すこ
>maruyama> とはできても、ファイル名が復元できなくて、困ることがあります。(ファイル
>maruyama> 名に重大な意味を込める人がいます。)
>
>ports/archivers/unzip を ICONV オプションを有効にして作リ、-Ocp932 あ
>るいは -Osjis オプションを指定すれば行けると思います。
>
>maruyama> ICONV : off
>
>残念ながら、デフォルトでは有効になっていないのですよね。
>
>--
>梅本 肇 http://www.mahoroba.org/~ume/
>ume @ mahoroba.org ume @ FreeBSD.org
>プログラムは書いた人の意図ではなく書かれた通り動く I hate Modula-3 :-)
--------
丸山直昌@統計数理研究所
freebsd-users-jp メーリングリストの案内