【小ネタ】Macで作成されたzipファイルをWindowsで解凍すると文字化けする事象への対応方法

Macで作成されたzipファイルは、WSL2 上の unzip コマンドで -Ocp932 オプションを付けて解凍すると、文字化けを回避できます。 また、圧縮ファイルを Google Drive へ配置した状態で解凍をすると、濁点と半濁点の問題を回避できます。
2023.09.26

はじめに

こんにちは、猫とアポロチョコと Systems Manager が好きな、テクニカルサポートの m.hayakawa です。

Mac で作成された日本語のファイル名が含まれたzipファイルを Windows 環境で解凍すると文字化けすることに悩まされていませんか?

私は先日ありました。

始めにおことわりしたい点として、Windows に WSL2 環境を構築して、Linux 環境で実行することが前提となります。

WSL2 の導入方法については、下記の記事が参考になります。

Windows 11 で WSL2 をセットアップしてみた | DevelopersIO

Windows Subsystem for Linux 2(WSL 2)をセットアップしてみた | DevelopersIO

Windows10+WSL2環境のLinuxディストリビューションにAWS CLIをインストールしてみた | DevelopersIO

結論

unzip コマンドで -Ocp932 オプションを付けて解凍すると、文字化けを回避できます。

また、圧縮ファイルを Google Drive へ配置した状態で解凍をすると、濁点と半濁点の問題を回避できます。

検証

こんな構成のディレクトリを作ってみました。

にほんごふぁいるめい
|- Japan
  |- Japan.txt
|- にっぽんにほんご
  |- にっぽんにほんご.txt
|- にほんごJapan
  |- にほんごJapan.txt
|- 日本語
  |- 日本語.txt

これを Mac(macOS Ventura 13.4.1) を使っているユーザーに渡して圧縮してもらって、Windows の Explore で解凍してみました。

思ったよりも大変なことになってますね。ディレクトリ関係も壊れてる部分もありそうです。

では、こちらを文字化けしないように解凍してみます。

WSL2 を開き、適当なフォルダ(C:\test)へ入れた圧縮ファイルを -Ocp932 オプションを付けて解凍します。

oh my god... 濁点と半濁点が分かれたファイル名になってしまいました。

エクスプローラー上では問題なさそうに見えているのですが、ファイル名を編集するときにバックスペースを1回入力すると、「ご」⇒「こ」となってしまい、濁点だけが消えるという挙動になります。

これを対処するための方法を模索しましたが、これといったものが見つからず、万策尽き果てたと思った頃にこんな記事を見つけました。

Mac OS X の NFD 問題での対策諸々 - Qiita

Dropbox ◯: どうやら、NFC, NFD の手当てをしているみたいだ。クライアントの OS 種別は分かってますからね。さすが。

これを見て、クラウドファイルサーバー上に圧縮ファイルを配置して解凍すれば対処できるのでは?と考えました。

私の環境では、G ドライブが google ドライブになっているので、そこに圧縮ファイルを配置して再度解凍してみました。

解凍する際は濁点と半濁点が分かれてしまっているのですが、ls コマンドで確認をすると濁点と半濁点が分かれていません。

エクスプローラー上でも、ファイル名を編集するときにバックスペースを1回入力すると、「ご」が消える挙動になります。

なぜ Google Drive 上だと濁点と半濁点問題が解決するかは、様々な記事がありますが、今一つはっきりとしたことは分かりませんでした。ですが、困ったときの小ネタとして覚えておくと良いかもしれません。

この記事がどなたか困っている人の助けになれば幸いです。

参考資料

Apple macOSの文字コード「UTF-8-Mac (NFD)」に起因する濁音・半濁音の非常に厄介な問題。ファイル名テキストのコピペ活用時、見分けがつかない欠陥的な落とし穴 | YujiKudo.com

GoogleAppsScriptでのGoogleDrive上のフォルダ/ファイル名検索におけるuft-8-macによるエラーについて - Qiita