MACからファイル名をコピペすると濁点(゛)や半濁点(゜)が…

MACからファイル名をコピペするとバラバラになる。例えば「カルビ」が「カルヒ゛」になる。

Macでは濁点などの日本語はNFD形式(本体の文字と濁点を別々の文字としエンコードする形式)で扱われるのに対して、Windowsなど他のOSではNFC形式(本体の文字と濁点を1つの文字としてエンコードする形式)で扱われるので、表示のされ方が異なります。らしいので、PHPのNormalizerを使って変換する。

  • 正規化形式
  • NFC: Normalization Form Canonical Compression | 文字に何がくっついていようと、組み合わせて作られた文字であろうと、「一文字」は「一文字」じゃ。圧縮形式。Linux のファイルシステムや Windows の NTFS などが普通に使っている。
  • NFD: Normalization Form Canonical Decompression | 濁点・半濁点を、あるいはウムラウト等のダイアクリティカルマークを、本体の文字とは分離してエンコードした形式。OS X の HFS+ が、これを採用してくれちゃっている。
 if (Normalizer::isNormalized($input, Normalizer::FORM_D)) {
        $input = Normalizer::normalize($input, Normalizer::FORM_C);
 }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です