🙋‍♂️

(自称) UNICODE ZIP普及委員会 定期POST① 作ろうUNICODE ZIP。

2023/01/27に公開

こちら、(自称) UNICODE ZIP普及委員会。

UNICODE ZIP なのは義務なんです。Language encoding flag を立ててますか?義務ですよ?果たしてますか?

#1 概要

ZIPファイルはPhil Katzさん (PKWARE) が開発した、主に Windows 向け の圧縮ファイル コンテナです。

ZIPファイルはPhil Katzさん (PKWARE) が開発した、主に Windows 向け の圧縮ファイル コンテナです。

大事なことなので2回言いました。

Windows XPでExplorerが対応した為か、今ではほぼ標準的に世界で利用されている(様子)。
また現在では、JavaのJAR形式やOpen Document、Office Open XML、FirefoxのプラグインのXPIなど様々なプラットフォームで多種多様な利用がされています。

そして、インターネットやデバイスの普及により、国やプラット フォームを跨ぐことが増え、ZIPコンテナの仕様にも国際文字対応が追加されています。

しかしながら、その仕様については認知度が低く。解凍ソフト以上に圧縮ソフト側の環境の普及も進んでおらず、あまり活用出来ておりません。本来であれば文字化けはもっと高確率で回避出来るはずですが、現実的には、未だに多くの人が文字化けに悩まされているのが現状です。

愛すべきZIPファイルの有効性をもっと大きくすべく。勝手ながら「 UNICODE ZIP 」と称し、認知とトラブル回避を広めていきたいと思い、 UNICODE ZIP普及委員会 を自称させて頂く次第です

尚、当方はかつては ZIP実装会 (#zipimpl) という勉強会を20011年頃に関東で行っていた首謀者の1人のポンコツです。

手前味噌

以前こんなものを書いていたことがあります。古い記事ですが、併せてご参照いただければと思います。

https://qiita.com/libraplanet/items/97b1d1fbdc19b07bdf27

https://qiita.com/libraplanet/items/5f6afac218c9df5f841f

#2 目的

当 (自称) UNICODE ZIP 普及委員会は、UNICODE ZIP の普及により、

  • UNICODE ZIP および UNICODE の認知の拡大。
  • UNICODE ZIP 対応ソフトウェアの普及拡大・定着・標準化。
  • UNICODE ZIP の普及を阻害する、 UNICODE ZIP 非対応ソフトウェアの衰退。
  • UNICODE ZIP ファイルの利用定着による、プラットフォーム間の文字コード トラブルの回避。

を目標としております。
会員募集中です。

#3 UNICODE ZIP とは (勝手に定義)

を指します。

OSのシステム 文字コードがUTF-8という理由で、ファイル名がUTF-8になっているものは、Language encoding flag が立っておらず、 従来のZIPで解凍側にはエンコードがわからないため、UNICODE ZIP とは呼びません。

UNICODE ZIPLanguage encoding flag によって、解凍側にも UNICODE (UTF8) であることがわかる必要があります。

また、Language encoding flag はエントリー単位で指定が可能なため、UNICODE ZIP のエントリーと UTF-8 のエントリーと、S-JIS のエントリーが混ぜることも、残念ながら可能です。キメラは文字化けを回避するという本質を全うしないため、 UNICODE ZIP としては取り扱いません。ただし、文字化けの危険性のない ASCIILanguage encoding flag が立っていなくても、UNICODE ZIP として許容いたします。

なお、 UNICODE ZIP は、内包しているファイル名とコメントのエンコードだけの話になります。。内容物のテキスト ファイルのエンコードについては言及しておりません。もちろん、圧縮アルゴリズムについても言及しません。

#4 UNICODE ZIP が普及しない諸悪 (問題提起)

代表的な要因の1つには、 窓の杜 のトップページに 「 無料で使える定番フリーソフト選! 」として、 UNICODE ZIP の解凍に対応していない Lhaplus が掲載されていることが挙げられると思います。

ss.png

こういった記載のせいで、一般のPCユーザーなどには今でも根強い人気となってしまい、 「 Lhaplus の挙動が正 」と信じて疑わない人も少なく無いと思います。また、エンジニアでは無い一般ユーザーへ説明するのも難しく、 Lhaplus など古いアーカイバーでの解凍で化けない様に、MS932でZIPに圧縮するサーバー アプリケーションなどが多くあるのでは無いのでしょうか?身に覚えはありますか?えぇ、私はあります。。。
_(:3」∠)_

コロナ禍でテレワークが増え、ZIPファイルでファイル交換をすることも増えている現代で、これは大変に困る状況です。

もう、 UNICODE ZIP に対応していないアーカイバーは 定番ソフトウェア なんかではありません。そもそもWindows Explorerが UNICODE ZIP に対応しているのに、 UNICODE ZIP 非対応のアーカイバーが勧められる理由は一切ありません。

(ちなみに会社で利用しているユーザーに聞いたらPPAPで使っているとか...)

最終的に、どんなソフトウェアを使おうが個人の自由です。それを否定するつもりはありませんが。保守性やセキュリティなど時代に合わせて、自由以前の他のユーザーに勧めて良いかどうかは別問題です。ただのバイアスです。

WinXPやWin 7だって、好きなら全然使って良いと思います。使いたいです。でも、実際に事務用途で使うか、友人知人に勧めるかと言えば、話は変わります。

初心者の手の届く近いところに、適切ではない情報があることが、 UNICODE ZIP の解凍環境の普及を阻害し。また、職業は趣味とは違いますから、当然SEと言ってもシステム自体には大して拘りのないのも当然です。なので、そんな大多数のシステム エンジニアへの理解も妨げられ、UNICODE ZIP の圧縮環境が増えず、 UNICODE ZIP が普及しないことに繋がっていると考えております。

窓の杜 には1日も早く、 Lhaplus の掲載を取り下げて頂くことを願ってやみません。
窓の杜 には1日も早く、 Lhaplus の掲載を取り下げて頂くことを願ってやみません。
窓の杜 には1日も早く、 Lhaplus の掲載を取り下げて頂くことを願ってやみません。
窓の杜 には1日も早く、 Lhaplus の掲載を取り下げて頂くことを願ってやみません。
窓の杜 には1日も早く、 Lhaplus の掲載を取り下げて頂くことを願ってやみません。

#5 UNICODE ZIP を作る。 (圧縮)

Java 7以降

Javaは7から UNICODE ZIP が標準になっております。

手前味噌ですが、以下をご参照ください。

https://qiita.com/libraplanet/items/5f6afac218c9df5f841f

Apach Commons Compress

Javaは6までは UNICODE ZIP に対応しておりません。その場合、Apach Commons Compressで対応が可能です。

https://javadoc.io/static/org.apache.commons/commons-compress/1.22/org/apache/commons/compress/archivers/zip/ZipArchiveOutputStream.html#setUseLanguageEncodingFlag-boolean-

7-Zip

圧縮時にパラメーターに cu=on をつけてください。
ただし、D&Dなどでアーカイブに追加などする際にはパラメーターをつけられないため、ZIPのエントリーとしては混合状態となります。
ss.png

7za

コマンド ライン引数に -mcu=on をつけてください。

さんぷる
7za a -tzip -mx=9 -mcu=on out.zip *.*

その他 (メモ)

  • Windows ExplorerはOSのシステム文字コードに収録されていない文字がファイルに使用されていると、そのファイルのエントリーはUNICODEになります。
  • WinRARはOSのシステム文字コードに収録されていない文字がファイルに使用されていると、そのファイルのエントリーはUNICODEになります。

#6 UNICODE ZIP を確認する。

7-Zip

7-Zip の 特性 カラムで簡単に確認が行なえます。UTF8となっているものは、UNICODE ZIP のエントリーです。
ss.png

#7 UNICODE ZIP を解凍する。

手前味噌ですが、過去 (200017年頃) にこんなものをまとめました。

https://qiita.com/libraplanet/items/97b1d1fbdc19b07bdf27

現在ではほとんどのソフトで UNICODE ZIP を正常に解凍出来ます。「それでも文字化けしたんだが?👿」というそこのあなた。それ、macやLinuxで作られた、UTF-8なだけのZIP じゃありませんか? Language encoding flag が立ってませんからー!残念! (予想)

👎使ってはいけない解凍ソフト

以下のソフトウェアは UNICODE ZIP の解凍に対応していない代表的な解凍ソフト。関連付けを行ってしまうことで、折角Windows Explorerが標準対応してくれているのを無駄にしてしまい、トラブルの元になってしまいます。

いずれも、過去にとても活躍した、便利で大変ありがたいソフトウェアたちですが。今はもう絶対に使ってはいけないし、もし身の回りで使っている人が居たら諭してあげましょう。システムに組み込まれていたら、7za などへの置き換えを検討してください。RPAで自動化するんだ!って人がいたら、RPAなんて夢見事にまで巻き込まれてはいけませんので、距離を置きましょう。

  • Lhaplus
  • Lasa
  • +Lhaca

👍推奨される解凍ソフト

以下のソフトウェアは UNICODE ZIP に解凍に対応している利用できるソフトウェアです。積極的に利用しましょう。

個人的には国産の Explzh を応援していきたいです。自己解凍書庫 (SFX Stub) も UNICODE ZIP に対応している優れものですので。

Q & A

Q. 突然どした?

A. togetterでのまとめの中で、

https://togetter.com/li/2058889

ちなみに、zipは仕様が複雑過ぎて、収集ついてない感じがする。

というツイートをみて。ZIPコンテナが、ZIPファイルにも多岐に活用されているのにと思い。ZIPが抱える問題の1つに対して、提起してみたくなった次第です。

Q. ZIP詳しいの?

A. ZIP実装会 (#zipimple) でも主催のくせに参加者に教えて貰ってばかりのポンコツでした。。。。未だにDeflate実装できてません。
_(:3」∠)_

Love ZIP!

Q. むしろ7zやとか後発のアーカイバーを使うべきなんじゃ?

A. 後発のアーカイブはどれもUNICODE対応されていますね。だからこそ、ZIPも UNICODE ZIP が現在のベストかと思います。UNICODE ZIP に対応していない環境は、9割方が使い続けず避けたほうが良いハズです。固執のに大した理由は無いと思います。

また、 ZIPコンテナDeflate も、ZIPファイルを離れて色々なシーンで利用されています。互換性 が非常に高いのです。データに於いて、最も重要視されるのは 互換性 だと思っております。だからこそ、今でも JPEGGIFTIFF でさえも現役だったりします。ZIPファイル 現役です。Windowsがデフォルトでサポートしてくれているお陰で、ソフトウェアを導入しなくても利用できるのです。同様の道をHTML5でPDFが追っておりますが、互換性 が高いんです。後発のアーカイバーも今後頑張ってほしいですし、いずれは置き換わるでしょう。ただ、それが今ではなく、並行期間かと思っております。

Q. 解凍?展開じゃないの?

A. 解凍派です。
たけのこ派です (聞いてない。)

手前味噌ですが、20016年頃に調べたものです。

https://docs.google.com/spreadsheets/d/1IzboCdBSMGLGfmQkItDD8oljhYfUtOaT80PF3dBuLCY/edit?usp=share_link

Q. Lhaplus そんなにダメ?

A. ずっと愛用していて、アイコン好きでした。だからこそ、有終の美を飾って欲しい。負の遺産を撒き散らしている現状が悲しい (T_T)。。。

謝辞

Discussion