ZIP を解凍したらファイル名が文字化けする理由と、直し方
Mac で作った ZIP を Windows で開くと「縺ッ縺セ縺」、Windows で作った ZIP を Mac で開くと「郢ァ」。中身は無事で、化けているのはファイル名だけです。ZIP がファイル名の文字コードを記録しないという原因と、7-Zip・Lhaplus・ブラウザで直す方法をまとめました。
化けた ZIP を今すぐ直す
ZIP をドロップすると、ファイル名の文字コードを判定して正しい名前で一覧します。そのまま取り出すか、どの環境でも化けない ZIP に保存し直せます。
ファイルはブラウザ内で処理し、どこにも送信されません。
取引先から届いた ZIP を解凍したら、ファイル名が「縺ッ縺セ縺・pdf」や「1ï¼.xlsx」になっていた。Mac の人から受け取った ZIP に限ってこうなる、あるいは自分が送った ZIP が相手の Mac で化けたと言われる。ファイルの中身は壊れていません。化けているのはファイル名だけで、原因は ZIP という形式が「ファイル名をどの文字コードで書いたか」を記録しないことです。この記事では、なぜそうなるのかを図で説明し、化け方から作った環境を見分け、状況に合わせた直し方を書きます。
なぜ化けるのか:ZIP はファイル名の文字コードを記録しない
ZIP の中では、ファイル名はただのバイト列として入っています。1989 年に作られた形式で、当時は「その PC の文字コードで書く」のが当たり前だったため、どの文字コードで書いたかを記す欄がありません。2006 年の仕様改訂で「この名前は UTF-8 です」という印(汎用フラグのビット 11)が追加されましたが、印を付けるかどうかはソフト次第で、付いていない ZIP が今も大量に作られています。
印が無い名前をどう読むかは、開く側が勝手に決めます。日本語の Windows は Shift_JIS(正確には CP932)として読み、Mac は UTF-8 として読みます。作った側と読む側の前提が違えば、名前は化けます。
化け方で分かる、どこで作られた ZIP か
化けた名前を見れば、たいてい作った環境が分かります。
- 「縺ッ縺セ縺」「繧」「郢」のような見慣れない漢字とカナ: UTF-8 で書かれた名前を Shift_JIS として読んだ形です。Mac、Linux、または新しいツールで作った ZIP を、日本語 Windows のエクスプローラーや古い解凍ソフトで開いたときにこうなります。Mac で作った ZIP には「__MACOSX」というフォルダも一緒に入っていることが多く、それも目印になります。
- 「1ï¼」「é」のような欧文の記号: UTF-8 の名前を欧文(Windows-1252)として読んだ形です。英語版 Windows や、日本語設定になっていない環境で開いたときに見えます。
- Mac で開いたら化けた、または「展開できません」と出た: Shift_JIS で書かれた名前を UTF-8 として読もうとした形です。日本語 Windows(Windows 10 までのエクスプローラー、Lhaplus など)で作った ZIP を Mac で開いたときにこうなります。Mac の標準のアーカイブユーティリティは文字コードを推測しますが、外れることがあります。
どの場合も、名前の元のバイト列は ZIP の中にそのまま残っています。正しい前提で読み直せば戻ります。これが、CSV の文字化けと同じで「壊れていない」と言える理由です。
直し方1:ブラウザで文字コードを指定して取り出す
このサイトの LZH / ZIP 解凍ツールは、印の無いファイル名を Shift_JIS・UTF-8・EUC-JP・GBK・Big5・EUC-KR・Windows-1252 のそれぞれで読んでみて、文章として自然なものを選びます。判定が外れたときは「ファイル名の文字コード」を切り替えると読み直します。
- ZIP をドロップします。ファイル名の一覧がすぐ出ます。
- 名前が正しく読めていることを確かめます。化けていたら文字コードを変えます。
- 必要なファイルを「保存」するか、「すべて ZIP で保存」を押します。保存し直した ZIP は名前を UTF-8 で書き、UTF-8 の印も付くので、Windows でも Mac でも化けません。
ソフトを入れられない社用 PC、iPad、相手に送り返す前に直したいとき向けです。ファイルはブラウザの中で処理され、どこにも送られません。パスワード付きの ZIP も、パスワードを入れれば同じように直せます。ただし保存し直した ZIP にはパスワードが掛からないので、相手に送り直すときは、取り出したファイルをZIP にパスワードを設定するツールに入れて作り直してください。
直し方2:Windows で、文字コードを判別する解凍ソフトを使う
Windows のエクスプローラーの「すべて展開」は、印の無い名前を CP932 と決めて読むので、Mac で作った ZIP を直せません。文字コードを判別する解凍ソフトを使います。
- CubeICE(無料):この文字化けを直すために作られたソフトで、名前の文字コードを自動判別します。右クリック → CubeICE で解凍。
- Explzh(個人利用は無料):UTF-8 の印を読み、印が無い名前も判別します。設定で文字コードを指定することもできます。
- 7-Zip(無料):UTF-8 の印が付いた ZIP は正しく開けます。印が無い UTF-8 の名前は Windows の既定(CP932)で読むため、Mac 製の ZIP では化けることがあります。
昔から入っている Lhaplus は、古い版だと UTF-8 の名前を扱えません。Mac 製の ZIP が化けるなら、上のどれかに替えるのが早いです。
直し方3:Mac・Linux で開く
- Mac:標準のアーカイブユーティリティで化ける・展開できないときは、The Unarchiver(App Store、無料)か Keka を入れます。どちらも Shift_JIS の名前を自動判別します。The Unarchiver は「環境設定」で判別できないときの文字コードも指定できます。
- Linux:
unzip -O cp932 ファイル.zipで文字コードを指定して展開できます(Debian・Ubuntu の unzip は -O に対応しています)。unar(The Unarchiver のコマンド版)も自動判別します。
送る側で化けない ZIP を作る
受け取る側に手間をかけさせないには、UTF-8 の印付きで ZIP を作るのが確実です。今の Windows・Mac・Linux の標準機能はどれも印を読みます。
- Windows:7-Zip で圧縮するとき、「パラメータ」欄に
cu=onと入れると UTF-8 の名前で書きます。Explzh や CubeICE にも UTF-8 で作る設定があります。エクスプローラーの「圧縮」は版によって書き方が違い(Windows 10 までは CP932、Windows 11 の新しい版では UTF-8 で書くという報告があります)、どちらの相手にも確実とは言えません。 - Mac:Finder の「圧縮」は UTF-8 で名前を書きますが印を付けないため、日本語 Windows で化けます。Keka で作るか、ターミナルで
zip -r 送付.zip フォルダと打つと印付きになります。 - どの環境でも:このサイトの解凍ツールで「すべて ZIP で保存」を押すと、印付きの ZIP に作り直せます。
- パスワードを付けて送るとき:ZIP にパスワードを設定するツールは、日本語の名前を UTF-8 の印付きで書きます(Windows 11 のエクスプローラーで開いて、名前が化けないことを確かめています)。
- いちばん確実な方法:ファイル名を英数字にする。印の有無にかかわらず、ASCII の名前はどの環境でも同じに読めます。
まとめ
- ZIP はファイル名の文字コードを記録しない。UTF-8 の印(ビット 11)が付いていない名前は、開く側が勝手に決めた文字コードで読む。
- 「縺ッ縺セ縺」は Mac 製の ZIP を Windows で開いた形、Mac で化けるのは Windows 製の ZIP。中身のファイルは無事。
- 直すには、ブラウザで文字コードを指定して取り出す、Windows なら CubeICE や Explzh、Mac なら The Unarchiver。
- 送る側は UTF-8 の印付きで作る(7-Zip の cu=on、Mac の zip コマンド)か、ファイル名を英数字にする。
よくある質問
中のファイルの内容も化けていますか?
パスワード付きの ZIP でも直せますか?
7-Zip で UTF-8 にする設定はどこですか?
cu=on と入力します。チェックボックスではなく自由入力の欄なので見落としやすい場所です。 この記事を書いた人
Ren
OpenedFile 開発者
OpenedFile を一人で作って運用しています。きっかけは、届いたメールの winmail.dat がどうやっても開けなかったこと。見つかるオンライン変換サービスはどれも「まずファイルをサーバーにアップロードしてください」というものばかりでした。それなら自分で書こうとTNEF パーサをフルスクラッチで実装し、以来このサイトのツールはすべてブラウザ内で完結しています。
OpenedFile について