Published by @SoNiceInfo at 2026/10/13
Macで圧縮したZIPを送ったら、相手のWindowsでファイル名が文字化けしていた。原因はZIPの中身ではなく、ファイル名の文字コードの伝え方にあります。 この記事では、Finderの圧縮とzipコマンドで作ったZIPを実際に調べた結果をもとに、文字化けする仕組みと、Windowsで文字化けしないZIPをMacで作る3つの方法を紹介します。 .DS_Storeや__MACOSXといった、Macだけで使うファイルを入れない方法もあわせて解説します。
ZIPには、ファイル名をどの文字コードで書くかの決まりがありません。そのかわり、ファイルごとの見出しにUTF-8フラグという印があり、これが付いていれば「この名前はUTF-8で書いた」という意味になります。 印が付いていない名前は、受け取った側のOSが自分の都合で読みます。日本語版のWindowsは、印のない名前をShift_JIS(CP932)として読みます。
Macは、ファイル名をUTF-8で書くのに、このUTF-8フラグを付けません。そのため、日本語版のWindowsはUTF-8の名前をShift_JISとして読んでしまい、たとえば「見積書.pdf」は「隕狗ゥ肴嶌.pdf」のような意味のない文字の並びになります。これが文字化けの正体です。
もう1つ、濁点・半濁点が分かれる問題もあります。Macのファイル名は、「ガ」を「カ」と「゛」の2文字として持っている(NFDという形式)ことがあり、そのままZIPに入れるとWindowsでは「カ゛」のように分かれて表示されます。 1文字にまとめる(NFC正規化)と、この問題は起きません。
筆者の環境(macOS 27)で、日本語の名前のファイルと.DS_Storeが入ったフォルダを圧縮し、できたZIPを調べました。 Finderの圧縮は、同じ形式でZIPを書き出すdittoコマンド(ditto -c -k --sequesterRsrc --keepParent。manページに、Finderの圧縮と同じようなZIPを作ると書かれています)で再現しています。
| 方法 | UTF-8フラグ | .DS_Store | __MACOSX |
|---|---|---|---|
| Finderの圧縮 | 付かない | 入る | 入る(拡張属性のあるファイルがあるとき) |
zipコマンド(zip -r) | 付かない(付けるオプションも無い) | 入る(-xで除外できる) | 入らない |
| python3のzipfile | 付く | 入る | 入らない |
| ZipScope | 付く(NFC正規化も) | 入らない | 入らない |
macOSに入っているzipコマンドは、UTF-8フラグを付けるオプション(-UN)が使えない版で、指定するとエラーになります。 つまり、Macの標準機能だけでは、日本語の名前を残したまま文字化けしないZIPは作れません。
__MACOSXフォルダは、ダウンロードしたファイルやFinderのタグを付けたファイルのように、拡張属性という追加の情報を持つファイルがあると作られます。中には「._」で始まるファイルが入ります。
ZipScopeは、Windowsで文字化けしないZIPを作れる、筆者が開発しているMac用の解凍・圧縮アプリです。 日本語などを含むファイル名にUTF-8フラグを付け、NFC正規化で濁点の分離も防ぎます。.DS_Store、__MACOSX、「._」で始まるファイルも既定で入れません。
右クリックで圧縮
Finderでファイルやフォルダを選び、右クリックして「ZipScope で圧縮」。メニューバーのアイコンにドロップしてもOK。
設定を確認
.DS_Storeなどを含めない設定とNFC正規化は最初からオン。ファイル名と出力先を確かめます。
「作成」をクリック
Windowsで開いても文字化けしないZIPができ、Finderで表示されます。

パスワードなしのZIP作成は無料で使えます。パスワード付きのZIP・7zの作成は、Pro(買い切りのアプリ内課金)の機能です。 ネットワーク通信は行わないので、ファイルがMacの外に送られることはありません。
macOS 14以降 · Apple Silicon / Intel 対応
Pythonに標準で入っているzipfileモジュールは、日本語などを含むファイル名にUTF-8フラグを付けてZIPを作ります。 ターミナルで、圧縮したいフォルダがある場所へ移動して、次のように実行します。
cd ~/Desktop
python3 -m zipfile -c 資料.zip 資料フォルダ/python3を初めて実行すると、コマンドライン・デベロッパ・ツールのインストールを求められることがあります。 この方法には次の制限があります。
.DS_Storeを入れたくない場合は、圧縮する前に元のフォルダから削除しておきます(削除してもFinderの表示設定がリセットされるだけです)。
find 資料フォルダ -name .DS_Store -deleteファイル名とフォルダ名を英数字だけにすれば、どの方法で圧縮しても文字コードの問題は起きません。確実ですが、ファイルが多いと名前を付け直す手間がかかり、受け取った相手にも内容が分かりにくくなります。
Finderの圧縮では.DS_Storeや__MACOSXが入るので、気になる場合はzipコマンドで除外しながら圧縮します。
cd ~/Desktop
zip -r documents.zip documents -x "*.DS_Store"-x "*.DS_Store"は、.DS_Storeを除外する指定です。zipコマンドは__MACOSXフォルダを作りません。
.DS_Storeは、Finderがフォルダの表示設定を保存するファイルです。__MACOSXは、Finderの圧縮が拡張属性を保存するために作るフォルダです。 どちらもMacでは見えませんが、Windowsでは普通のファイルとして表示されるため、「見慣れないファイルが入っている」と言われる原因になります。
-x "*.DS_Store"で.DS_Storeを除外できます。__MACOSXは作りません。逆向きの問題もあります。日本語版のWindowsで作られたZIPは、ファイル名をShift_JISで書き、UTF-8フラグを付けません。 筆者の環境(macOS 27)で、Shift_JISの名前のZIPをmacOSの標準機能(ditto)で展開したところ、日本語環境のMacでは正しい名前で展開されました。 一方、システムの言語を英語にした状態を再現すると「å©êœèë」のように文字化けしました。ターミナルのunzipコマンドは、名前を扱えずにエラーで止まりました。
ZipScopeは、Macの言語設定に関係なくShift_JIS(CP932)を自動で判定して、正しい日本語で表示・展開します。 判定が合わないときは、CP932・UTF-8・EUC-JP・GBK・EUC-KRなどから手動で切り替えられます。日本語のパスワードが付いたZIPは、UTF-8とCP932の両方を自動で試します。


ZIPの各ファイルの見出し(ヘッダー)にある、「このファイル名はUTF-8で書かれている」ことを示す印です。ZIPの仕様では汎用フラグの11ビット目にあたり、EFS(Language encoding flag)とも呼ばれます。 この印が付いていれば、WindowsもファイルのUTF-8の名前をそのまま読みます。付いていないと、日本語版のWindowsはShift_JIS(CP932)として読むため、Macで作ったZIPのファイル名が文字化けします。
UTF-8フラグに対応していない古い解凍ソフトを使っている可能性があります。最近のWindowsの標準機能(エクスプローラー)ならUTF-8フラグ付きのZIPを正しく表示できるので、標準機能で開いてもらうか、ファイル名を英数字にして作り直すのが確実です。
ファイル名をUTF-8として読み直せる解凍ソフトを使えば、正しく表示できる場合があります。ただ、相手の環境に頼るより、送る側でUTF-8フラグ付きのZIPを作るほうが確実で、相手の手間もかかりません。
.DS_Storeは、Finderがフォルダの表示設定(アイコンの位置や表示方法など)を保存するためのファイルです。削除しても書類の中身には影響せず、Finderが必要なときに作り直します。 ZIPに入れないだけなら、元のフォルダから削除する必要はありません。ZIPに入れない方法を参照してください。
できます。ZipScopeのPro(買い切り)なら、UTF-8フラグ付きで、Windows標準の機能で開けるパスワード付きZIPを作れます。 ターミナルのzipコマンドでもパスワードは付けられますが、UTF-8フラグは付けられません。詳しくはMacでパスワード付きZIPを作る方法で解説しています。
Macで作ったZIPがWindowsで文字化けするのは、MacがUTF-8で書いたファイル名に、UTF-8であることを示す印を付けないためです。 Finderの圧縮とzipコマンドではこの印を付けられないので、日本語の名前のまま送るなら、UTF-8フラグを付けられるZipScopeのようなアプリか、python3のzipfileを使うのが確実です。 .DS_Storeと__MACOSXも入れないようにすると、受け取った相手が迷いません。