Macで作ったZIPがWindowsで文字化けする原因と対処法3つ

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正規化)と、この問題は起きません。

Macの標準機能で作ったZIPを調べた結果

筆者の環境(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のタグを付けたファイルのように、拡張属性という追加の情報を持つファイルがあると作られます。中には「._」で始まるファイルが入ります。

おすすめ方法1: アプリ (ZipScope) で圧縮する

ZipScopeは、Windowsで文字化けしないZIPを作れる、筆者が開発しているMac用の解凍・圧縮アプリです。 日本語などを含むファイル名にUTF-8フラグを付け、NFC正規化で濁点の分離も防ぎます。.DS_Store、__MACOSX、「._」で始まるファイルも既定で入れません。

1

右クリックで圧縮

Finderでファイルやフォルダを選び、右クリックして「ZipScope で圧縮」。メニューバーのアイコンにドロップしてもOK。

2

設定を確認

.DS_Storeなどを含めない設定とNFC正規化は最初からオン。ファイル名と出力先を確かめます。

3

「作成」をクリック

Windowsで開いても文字化けしないZIPができ、Finderで表示されます。

ZipScopeのZIP作成ウィンドウ。Windows向けの設定が最初からオンになっている

パスワードなしのZIP作成は無料で使えます。パスワード付きのZIP・7zの作成は、Pro(買い切りのアプリ内課金)の機能です。 ネットワーク通信は行わないので、ファイルがMacの外に送られることはありません。

ZipScopeを見る →

macOS 14以降 · Apple Silicon / Intel 対応

ターミナル派向け方法2: python3のzipfileで圧縮する

Pythonに標準で入っているzipfileモジュールは、日本語などを含むファイル名にUTF-8フラグを付けてZIPを作ります。 ターミナルで、圧縮したいフォルダがある場所へ移動して、次のように実行します。

cd ~/Desktop
python3 -m zipfile -c 資料.zip 資料フォルダ/

python3を初めて実行すると、コマンドライン・デベロッパ・ツールのインストールを求められることがあります。 この方法には次の制限があります。

  • .DS_Storeも一緒に入ります(除外するオプションはありません)。
  • NFC正規化はしないので、濁点が分かれた名前(NFD)はそのまま入ります。
  • 圧縮のたびにターミナルを開く必要があります。

.DS_Storeを入れたくない場合は、圧縮する前に元のフォルダから削除しておきます(削除してもFinderの表示設定がリセットされるだけです)。

find 資料フォルダ -name .DS_Store -delete

追加インストールなし方法3: ファイル名を英数字にしてから圧縮する

ファイル名とフォルダ名を英数字だけにすれば、どの方法で圧縮しても文字コードの問題は起きません。確実ですが、ファイルが多いと名前を付け直す手間がかかり、受け取った相手にも内容が分かりにくくなります。

Finderの圧縮では.DS_Storeや__MACOSXが入るので、気になる場合はzipコマンドで除外しながら圧縮します。

cd ~/Desktop
zip -r documents.zip documents -x "*.DS_Store"

-x "*.DS_Store"は、.DS_Storeを除外する指定です。zipコマンドは__MACOSXフォルダを作りません。

.DS_Storeと__MACOSXを入れない方法

.DS_Storeは、Finderがフォルダの表示設定を保存するファイルです。__MACOSXは、Finderの圧縮が拡張属性を保存するために作るフォルダです。 どちらもMacでは見えませんが、Windowsでは普通のファイルとして表示されるため、「見慣れないファイルが入っている」と言われる原因になります。

  • Finderの圧縮 ─ 除外する設定はありません。
  • zipコマンド ─ -x "*.DS_Store"で.DS_Storeを除外できます。__MACOSXは作りません。
  • ZipScope ─ .DS_Store、__MACOSX、「._」で始まるファイルを既定で入れません。Macで作られたZIPを展開するときも、これらのファイルは書き出しません(設定で変更できます)。

Windowsから届いたZIPがMacで文字化けするとき

逆向きの問題もあります。日本語版の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の両方を自動で試します。

文字コードを誤って読み、文字化けしたファイル名の一覧
ZipScopeの自動判定で正しい日本語になったファイル名の一覧

こんな人にはこの方法

  • 仕事でWindowsの相手とZIPをやり取りする ─ ZipScope。いつもの右クリックで、文字化けせず.DS_Storeも入らないZIPを作れます。Windowsから届いたZIPの文字化けにも対応します。
  • たまにしか送らず、ターミナルに抵抗がない ─ python3のzipfile。.DS_Storeは事前に削除しておきます。
  • ファイルが数個で、名前を変えても困らない ─ ファイル名を英数字にする。

よくある質問

Q. ZIPのUTF-8フラグとは何ですか?

ZIPの各ファイルの見出し(ヘッダー)にある、「このファイル名はUTF-8で書かれている」ことを示す印です。ZIPの仕様では汎用フラグの11ビット目にあたり、EFS(Language encoding flag)とも呼ばれます。 この印が付いていれば、WindowsもファイルのUTF-8の名前をそのまま読みます。付いていないと、日本語版のWindowsはShift_JIS(CP932)として読むため、Macで作ったZIPのファイル名が文字化けします。

Q. 文字化けしないZIPを作ったのに、相手のWindowsでまだ化けると言われました。

UTF-8フラグに対応していない古い解凍ソフトを使っている可能性があります。最近のWindowsの標準機能(エクスプローラー)ならUTF-8フラグ付きのZIPを正しく表示できるので、標準機能で開いてもらうか、ファイル名を英数字にして作り直すのが確実です。

Q. 受け取ったWindows側で文字化けを直せますか?

ファイル名をUTF-8として読み直せる解凍ソフトを使えば、正しく表示できる場合があります。ただ、相手の環境に頼るより、送る側でUTF-8フラグ付きのZIPを作るほうが確実で、相手の手間もかかりません。

Q. .DS_Storeを削除しても大丈夫ですか?

.DS_Storeは、Finderがフォルダの表示設定(アイコンの位置や表示方法など)を保存するためのファイルです。削除しても書類の中身には影響せず、Finderが必要なときに作り直します。 ZIPに入れないだけなら、元のフォルダから削除する必要はありません。ZIPに入れない方法を参照してください。

Q. パスワード付きの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も入れないようにすると、受け取った相手が迷いません。