5. 未分類項目

5.1. WindowsでUTF-8エンコードされたZIPファイルを作成したい

古いWindowsで作成するZIPファイルの問題

古いWindowsでは、エクスプローラーでZIPファイルを作成すると、ファイル名(とフォルダ名)をローカルコードページ(日本語版ではCP932。Shift_JISとほぼ同義)でエンコードする仕様となっています。しかしMoodleをはじめとする多くのWebシステムでは、ZIP内のファイル名がUTF-8でエンコードされていることを前提としているため、こうしたZIPファイルをUTF-8として無理矢理デコードした結果、フォルダ名やファイル名が文字化けしてしまうことがよくあります。

外部のシステムにアップロードしたり、外部に提供するZIPファイルを作成する場合は、文字化けを防ぐためにUTF-8でエンコードしたZIPファイルを作成する必要があったり、その方が望ましい場合があります。

最近のWindows

最近のWindows 11(*)では、エクスプローラーでZIPファイルを作成すると、ファイル名をUTF-8でエンコードする仕様となっており、上述の問題は発生しません。(Windows 10でもUTF-8を使用する設定は可能ですが、OS全体に影響するベータテスト機能であり、推奨しません)

(*) Windows 11 24H2以降、および更新プログラムKB5039302(23H2ビルド22631.3810、22H2ビルド22621.3810)以降に段階的ロールアウト。いずれも7zやTARへの圧縮機能が追加されるなどの大きな変更を伴う更新です。Microsoftは明言していないようですが、同時にZIPのUTF-8化にも対応したと推測されます。

作成のためのUIはWindowsのエディション・バージョンごとに微妙に異なりますが、上記バージョンではエクスプローラーの右クリックメニューから「圧縮先…」→「ZIPファイル」とするか、「その他のオプションを確認」→「送る」→「圧縮フォルダー」で作成できます。

7-Zip

広く利用されている圧縮アプリです(配付サイト, 日本語配付サイト)。現時点では7-Zipのインストーラの発行元は「不明」と表示されます。正規サイトからダウンロードしたものであれば開発者の意図に反するコードが埋め込まれているリスクは小さいと思われます。他のサイトからはダウンロードしないように注意してください。ソースコードは公開されていますので、必要であれば独自にビルドすることも可能と思われます。

注意: 作者はロシア国籍のようです。商用・非商用を問わずどのようなソフトウェアも同様ですが、最近の情勢による脆弱性対応の遅延や開発停止等のリスクがありうる点にはご注意ください。

デフォルトでは可能な限りローカルコードページでエンコードする設定になっていますが、強制的にUTF-8でエンコードするには、対象のフォルダを右クリックして(Windows11では「その他のオプションを表示」→)「7-Zip」→「圧縮…」で「パラメーター」欄に「cu=on」と記入しておけば、以降この設定が保存されます。また「アーカイブ形式」はデフォルトで「7z」ですが、これも「zip」に変更して設定してください。(パラメーターの設定項目はドキュメント参照)

 

PeaZip

近年知られるようになってきた圧縮アプリです(公式サイト)。現時点ではPeaZipのインストーラの発行元は「不明」と表示されます。正規サイトからダウンロードしたものであれば開発者の意図に反するコードが埋め込まれているリスクは小さいと思われます。他のサイトからはダウンロードしないようにするか、そうでない場合は必ず正規サイトに記載されているハッシュ値を確認してください。ソースコードは公開されていますので、必要であれば独自にビルドすることも可能と思われます。

インストール時に、デフォルトでは各種アーカイブファイル形式に関連づけをしてしまいますが、混乱しないようにすべてチェックをはずす(「None of the above group」を2箇所選択する)ことも検討してください。

UI言語はデフォルトでは英語ですが、「スタート」メニュー→「すべてのアプリ」→「PeaZip」→「PeaZip」により、PeaZipのファイルマネージャを開き、「Options」→「Settings」の「General」タブ内の「Localization」で「ja.txt」を選択することにより、日本語UIに変更できます。

ZIP圧縮時はファイル名はデフォルトで強制的にUTF-8でエンコードされます。対象のフォルダを右クリックして(Windows11では「その他のオプションを表示」→)「PeaZip」→「Add to ZIP(ZIP に追加)」によりZIPファイルが作成されます。エンコード方法などは上記の設定画面で変更可能です。