tar/gzip/zipのファイル名文字コード

よくよく考えると、あれですね。どれだ。

DropDiskImageってStuffItの日本語ファイル名の問題がどうたらとかえらそうに書いてたものの、ファイル名の文字コードの問題はgzipにもzipにもある、ということを思い出したので書いときます。

えと、アーカイバってもう20年前からすごい数あって、まぁたぶんその辺の処理内容って当時からそんなに変わってないんでしょう。
当然ファイル名はchar配列で取得、というような処理になってて、文字コードはASCII前提、日本語は(DOSのShiftJISだと)表問題とかで通らない場合もある。けど、とりあえずそこだけパッチ、みたいな感じでずっと来たんじゃないかと思います(違ってたらごめんなさい)。

圧縮ファイルなりアーカイブファイルなりに含まれているファイルの名前ってのは、そゆことで実行環境から標準的な手段で(readdirとかで)得られる文字コードそのままで保持されている、と考えるのが素直です。わざわざファイル名の文字コードをアーカイブの中に保存している、ってのは少ない、というかワタシは見たことない。

tarやgzip, zipも例外でないわけで。

なのでDropDiskImageで日本語名のフォルダをディスクイメージファイルにして、さらにgzip/zipで圧縮すると、gzipやzip自体は可搬性があるのに、そのファイルはMacOS X以外の環境では復元できないことがあります(現にWindowsで作成されたzipファイルの中にはMacOS Xで復元できないものがあります。StuffIt Expanderは何か文字コードの判別処理を持っているらしく、だいたい復元できちゃうんですが)。

.dmgてばMacOS X以外の環境で復元ってのも(今は)考えにくいんですけど。

なんかそう考えると文字コードを保持したアーカイブフォーマットがオープンソースで欲しいですね。
なんか「まだtar?」って気もしますし。

# squash/squeeze/squelchとか、CP/Mのアーカイバだかアーカイブフォーマットだかには、なぜかsqu〜が多かったのを思い出してしまいました。日本語で言うと「ぺちゃ」「ぺしゃ」「ぶちゅ」ぐらいのイメージなんでしょうね。