濁点が分離する理由
Unicode では「が」を 1 文字(NFC)でも、「か」と結合用の濁点 U+3099 の 2 文字(NFD)でも表せます。「パ」も同じく「ハ」と結合用の半濁点 U+309A に分けられます。macOS はファイル名を NFD で保存することが多く、Windows や多くのアプリは NFC を前提にしています。そのため Mac で圧縮したファイルや、USB メモリ・クラウド経由で受け取ったファイルの名前が、エクスプローラーや Excel、Word、一部のメールソフトで か゛ ハ゜ のように見えます。
文字が消えたわけでも、文字コードが壊れたわけでもありません。バイトはすべて正しい UTF-8 で、「か」と濁点が別々に並んでいるだけなので、結合すれば元に戻ります。ブラウザーなどでは が(「か」+ U+3099 の 2 文字)も「が」と同じに見えますが、中身は別の文字列です。
よくある場面
- Mac で作った zip ファイルを Windows で展開したときのファイル名・フォルダー名
- Mac ユーザーからメールやチャットで届いた添付ファイルの名前
- Mac のプレビューや PDF からコピーした文章を Word や Excel に貼り付けたとき
- Mac で作った CSV やテキスト:画面では正しく見えても、検索、並べ替え、重複チェックがうまくいかない(「パソコン」で検索しても
パソコンが見つからない)
Mojibuster で直す方法
- 濁点が分かれたファイル名や文章をコピーして、上の枠に貼り付けます。複数行もまとめて処理できます。
- Mojibuster が濁点・半濁点を元の 1 文字に結合し、変更した箇所の数を表示します。
- コピー を押して結果を取り出し、ファイル名の変更や文書への貼り付けに使います。
- CSV、TXT、JSON ファイルはそのままドロップすると、中身をすべて結合した UTF-8 ファイルとして ダウンロード できます。
ファイル名をまとめて直すには
Mojibuster はブラウザー内だけで動くため、パソコンにあるファイルの名前を直接変えることはできません。ファイルが多い場合は、Windows の PowerShell で対象のフォルダーに移動し、次のコマンドを実行すると、サブフォルダーも含めてファイル名を NFC に揃えられます。実行前に必ずフォルダーのバックアップを取ってください。PowerShell の日本語の扱いについては PowerShell の文字化け で詳しく説明しています。
Get-ChildItem -Recurse | Where-Object { $_.Name -ne $_.Name.Normalize() } | Rename-Item -NewName { $_.Name.Normalize() }
再発を防ぐには
- 解凍ソフトの中には、Mac で作った zip を展開するときにファイル名の濁点を自動で結合できるものがあります。お使いの解凍ソフトの設定を確認してください。
- Mac から送る側なら、ファイル名を英数字にするか、受け取る人にこのページを伝えてください。
- Excel やデータベースに取り込む前に文章を NFC に揃えておくと、検索や並べ替えの問題がなくなります。Python では
unicodedata.normalize('NFC', text)を使います。pandas の文字化け もあわせてご覧ください。 - CSV を Excel で開いたときに日本語全体が崩れる場合は、濁点ではなく文字コードの問題です。Excel の CSV 文字化け をご覧ください。
文字化けとの違い
縺薙s縺ォ縺。縺ッ や ‚±‚ñ‚É‚¿‚Í のように別の漢字や記号に置き換わるのは、濁点の分離ではなく文字コードの読み違いによる文字化けです。原因と直し方は 文字化けとは と Shift_JIS を UTF-8 に変換 で説明しています。Mojibuster はこうした文字化けも同じ枠で直せます。
よくある質問
結合すると文字が変わったり消えたりしませんか?
いいえ。分かれた濁点・半濁点を前の文字と 1 つにまとめるだけで、内容は変わりません。すでに 1 文字になっている文字や英数字、漢字には手を加えません。
見た目は正しいのに検索で見つかりません。同じ問題ですか?
可能性が高いです。濁点を重ねて表示するアプリでも、内部では別の文字列として扱われるため、検索や並べ替え、重複チェックで一致しません。貼り付けて変更箇所が表示されれば、濁点が分離していたということです。
ファイルはアップロードされますか?
いいえ。貼り付けた文章もファイルもすべてブラウザー内で処理され、端末の外に出ることはありません。