zip の中のファイル名が文字化けするとき
zip を解凍したら中のファイル名が レãƒãƒ¼ãƒˆ.pdf や コï¾ï¾† のようになってしまう場合です。中身は正常で名前だけ化けているなら元に戻せます。
なぜ名前だけ化けるのか
ZIP 形式には ファイル名をどの方式で書いたかを示す欄があります。規格上は汎用フラグの bit 11 と呼ばれ、ここが立っていれば「名前は UTF-8 だ」という意味になり、どの環境でも正しく読めます。
問題は 古い圧縮ソフトがこの欄を空のまま保存することです。すると名前はその PC のコードページ(日本語 Windows なら CP932、韓国語なら CP949)で書かれます。作った人の PC では正常に見えます — 同じ表で読み戻すからです。
ところがその zip を macOS・Linux・他の言語設定の Windows で開くと別の表で読まれます。だから受け取った側でだけ化けます。作り方が間違っていたのではなく目印が付いていないだけなので、メールやチャットでやり取りするときに特によく起こります。
中身は無事です
大事なのは 名前と中身が別々に保存されていることです。圧縮されたデータ自体は文字コードとまったく関係がありません。名前がどれだけ崩れて見えても、開けば中身は正常です。
手作業で付け直すこともできますが、数十個ともなると現実的ではありませんし、そもそも元の名前が何だったのか分かりません。
このツールで直す
文字化け直しのファイルタブに zip をそのままアップロードしてください。先に解凍する必要はありません。
中の名前を判定して 元の名前 → 新しい名前の一覧を表示します。問題なければ詰め直した zip をダウンロードしてください。すでに UTF-8 で正しく書かれていた項目は薄く表示されて区別できます。
圧縮データには一切触れません。データブロックをそのまま複製し、ヘッダの名前だけを書き直します。展開して再圧縮するわけではないので 中身が壊れる余地がなく、処理も一瞬で終わります。
ファイルはサーバーに送信されません。ブラウザの中だけで処理されるので、社内資料でもそのままお使いいただけます。
名前ひとつでは判定できない
このツールは中の ファイル名をすべて繋げてひとかたまりとして判定します。名前ひとつでは短すぎて統計が成り立たないためです。a.txt 一つだけの zip は判定が難しいこともありますが、実際の zip には複数入っているのが普通なので問題になりません。
直せない場合
次の三つは検出して 理由を表示したうえで断ります。黙って誤った結果を出すことはしません。
パスワード付き zip — 名前の情報にもアクセス制限がかかります。
ZIP64 形式 — 4GB を超える大きな書庫に使われる拡張形式です。
分割圧縮 — .z01 のように複数に分かれているもの。
rar・7z には対応していません。zip のみです。他の形式なら解凍して zip で詰め直せば使えますが、その過程ですでに化けた名前が固定されてしまうことがあります。可能であれば 作成した人に UTF-8 で圧縮し直してもらうほうが確実です。
二度と化けないように圧縮するには
多くの圧縮ソフトに 「ファイル名を UTF-8 で保存」というオプションがあります。人に渡すファイルなら有効にしてください。今の Windows エクスプローラーと macOS は既定で UTF-8 を使いますが、古いソフトやバージョンではそうではありません。
いちばん確実なのは ファイル名を英数字だけにすることです。A〜Z はどの表でも同じ番号なので、そもそも化けようがありません。その理由は Shift_JIS と UTF-8 の違い にまとめています。