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); }