← すべての記事

Mac ファイル名 濁点 分離 の原因と直し方(Windowsで文字化け)

Macで作ったファイルをWindowsで開くと、「が」が「か」と「゛」に分かれて見えたり、「ぱ」の半濁点が文字から離れて表示されたりすることがあります。よく「Mac ファイル名 濁点 分離」や「文字化け」と呼ばれる症状です。ファイルの中身は壊れていません。原因はファイル名の文字の書き方の違い(Unicodeの正規化形式で、NFDとNFCと呼ばれます)にあります。直し方は、名前を打ち直す、PowerShellのコマンドを一行実行する、ブラウザで使える無料ツールでまとめて変換する、の三つです。

この記事では、開発者でなくても手順どおりに進められるよう、手間の少ない方法から順に説明します。

Mac ファイル名 濁点 分離 の症状とは

この問題が起きるのは、「基本の文字+記号」の組み合わせで書ける文字を含む名前だけです。主に次のような場合です。

  • 日本語の濁音・半濁音: 「が」「ぱ」「ど」など
  • アクセント付きの欧文字: José、Zoë、Müller、résumé など
  • ハングルなど、一文字を複数の部品で組み立てる文字
  • ベトナム語など、記号を重ねて使う言語

「report_final_v3.docx」のような英数字だけの名前は影響を受けないため、長い間気づかない人も多いようです。

Windows側で見られる典型的な症状は次のとおりです。

  1. 濁点や半濁点の位置がずれて見える、またはアクセント記号が浮いて見える。
  2. エクスプローラーでは正しく見えるのに、検索ボックスに入力すると見つからない。
  3. 同じフォルダに同じ名前のファイルが二つあるように見えるが、Windowsは何も警告しない。Macで作ったものと、Windowsで作ったものが混在している。
  4. スクリプト、バックアップツール、同期ソフトが「ファイルが見つかりません」と報告する。ファイルは確かにそこにある。
  5. Webフォームでアップロードが弾かれる、または名前が不自然な綴りで保存される。

逆向きのケースもあります。WindowsからMacに送った「ぱ」を含むファイルを、Mac側のシェルスクリプトが別の綴りで探して失敗する場合です。根本の原因は同じです。

なぜ起きるのか:NFDとNFCの違い

コンピューターであらゆる言語の文字を扱うための国際規格であるUnicodeでは、見た目が同じでも書き方が二通りある文字があります。

  • 合成形(NFC): 「が」は一文字です。日本語の入力ソフトで「が」と打ったときや、Windowsで一般的に使われる形です。Webサーバーやデータベース、多くのファイルシステムはこの形を前提にしています。
  • 分解形(NFD): 「が」は「か」と結合用の濁点という二文字で書かれます。同じことが「é」(e+結合アクセント)やハングル(「한」を「ㅎ+ㅏ+ㄴ」で書くなど)にも当てはまります。

NFCとNFDは「合成」と「分解」を表す技術的な呼び名です。正式名称を覚える必要はありません。

macOSでは、長い間ディスク上のファイル名を分解形で保存していました。現在のMacはより柔軟に扱えるようになっていますが、macOS上の多くのソフトは今も分解形の名前を作ります。Finderの「圧縮」機能でできるZIPファイルも、その一例です。そのため、Macから出たファイルはZIP、USBメモリ、メール、共有ドライブ、Webへのアップロードなどを経由するとき、名前が分解形のまま運ばれることがよくあります。

Windowsは名前を変換しません。二つの書き方を別の文字列として扱うため、同じフォルダに「同じ名前」のファイルが並んだり、合成形で検索すると分解形のファイルが見つからなかったりします。見た目が崩れるかどうかは、フォントや名前を表示するソフトによって変わります。そのため、同じファイルがエクスプローラーでは正常に見え、メールソフトでは崩れて見えることもあります。

ファイルの中身には影響しません。分解形の名前のPDFも、他のPDFと同じように開けます。壊れているのは名前のラベルだけです。

直し方:ファイルの数に応じて選ぶ

ファイルの数に合わせて、次の方法から選んでください。

数ファイルなら名前を打ち直す

  1. エクスプローラーでファイルを選び、F2キーを押します。
  2. 濁点や半濁点を含む部分を消し、自分のキーボードで打ち直します。Wordなどで自分が入力した文字をコピーして貼り付ける方法もあります。
  3. Enterキーを押します。

Windowsでは合成形で保存されるため、新しい名前は通常どおり扱えます。古い名前をそのままコピーして貼り直さないでください。分解形の綴りがそのまま戻ってしまいます。

フォルダ内のファイルをまとめて直す:PowerShell

WindowsにはPowerShellが標準で入っており、.NETには正規化の関数も組み込まれています。追加のダウンロードは必要ありません。

  1. エクスプローラーで対象のフォルダを開きます。
  2. アドレスバーをクリックして powershell と入力し、Enterキーを押します。そのフォルダを指定した状態でPowerShellの画面が開きます。
  3. 次の一行を貼り付けてEnterキーを押します。
Get-ChildItem -File | Where-Object { $_.Name -ne $_.Name.Normalize('FormC') } | Rename-Item -NewName { $_.Name.Normalize('FormC') }

Where-Object の部分で、名前がすでに合成形になっているファイルはスキップされるため、二回実行しても問題ありません。フォルダ名も直したい場合は -File を外します。サブフォルダも対象にする場合は、Get-ChildItem の後ろに -Recurse を加えます。大切なファイルを一括で名前変更する場合は、どの操作でも同じですが、先にコピーで試すと安心です。

コマンドが使えない、共有PCや制限のあるPCの場合:ブラウザツール

無料のFilenameFixerのWebアプリを使うと、ブラウザ上で同じ変換ができます。ファイルをページにドラッグ&ドロップすると、分解形から合成形へまとめて名前を変換でき、結果をダウンロードできます。処理はブラウザ内で行われ、ファイルも名前もサーバーには送信されません。機密文書を扱う場合でも使いやすい点です。スプレッドシートやメールからコピーした名前の一覧をテキスト欄に貼り付けて、合成形に変換することもできます。

ZIPの中のファイル名がMacとWindowsで崩れる場合

ZIPファイルは、この問題を運ぶ最も一般的な経路です。Finderの「圧縮」はアーカイブの中に分解形の名前を書き込みます。Windowsでそのまま展開すると、中のすべての濁音・半濁音・アクセント付きの名前が一度に崩れます。

先に展開してから、上のPowerShellのコマンドを実行する方法があります。展開前にアーカイブを直したい場合は、FilenameFixerのZIPファイル名の復元ページが使えます。200 MBまでのアーカイブを受け付け、中の名前を変換して、Windowsできれいに展開できるZIPを返します。こちらもブラウザ内で処理され、アーカイブはアップロードされません。

中の名前が崩れているだけでなく、「?」や「□」が並ぶ、「À̹Ì」のような意味不明な文字列になっている場合は、NFDではなく、古い文字コード(エンコード)の問題の可能性があります。この場合は、Windowsの「すべて展開」や、文字コードの設定ができるほかの解凍ソフトで確認してください。

次から防ぐには

Macからファイルを送る場合。 共有先がWindowsの利用者なら、ファイル名は英数字で付けるのが一番確実です。「invoice_2024.pdf」のような名前は、どの環境でも崩れません。日本語の名前を残す必要がある場合は、送る前に名前を変換し、受け取る相手に崩れて見えたときの対処を伝えておくと安心です。

Webフォームからアップロードする場合。 多くのサイトやCMSは、ファイル名を合成形で保存することを前提にしており、分解形の名前をうまく扱えないことがあります。そのため、Macからのアップロードでは名前がずれたり、拒否されたりすることがあります。FilenameFixerのChrome拡張機能を使うと、アップロード画面でファイルを選んだ時点で名前を自動的に変換します。事前にリネームする手間が省けます。拡張機能自体にはアクセス解析は含まれていません。

スクリプトを書く場合やサーバーを運用する場合。 ファイルがシステムに入る地点で名前を合成形(NFC)に変換し、比較するときは両方を変換してから比べるようにします。Pythonでは unicodedata.normalize("NFC", name)、JavaScriptでは name.normalize("NFC")、.NETでは name.Normalize(NormalizationForm.FormC) を使います。Gitをmacで使っている場合は、git config --global core.precomposeunicode true を設定すると、ファイル名が合成形で記録されます。MacとWindowsの間でチェックアウトするたびに変更扱いになる問題を防げます。

よくある質問

ファイルは壊れていますか? いいえ。綴りの書き方が違うだけです。名前を変えても中身は変わりません。

エクスプローラーでは正しく見えるのに、検索や同期ツールで見つからないのはなぜですか? 多くのフォントでは、Explorerは二つの書き方をほぼ同じように描画します。一方、検索や同期ツールは文字のデータそのものを比べるため、「が」と「か+濁点」は別物として扱われます。

Mac側では正しく見えますか? はい。現在のmacOSは両方の形を読めます。ただし、システムをまたいで移動するファイルには、合成形のほうが安全です。

インストールは必要ですか? PowerShellの方法では不要です。ブラウザツールはブラウザがあれば使えます。Chrome拡張機能は任意で、Webへのアップロードの場合にのみ役立ちます。

要するに、NFDとNFCは同じ文字の二通りの書き方です。macOSは一方を作りやすく、Windowsはもう一方を前提としています。名前を打ち直すか、PowerShellで変換するか、ブラウザツールを使うことで、ファイルは通常どおり扱えるようになります。