フォルダ内のファイル一覧をごにょごにょするようなアプリを開発していた時に、濁点・半濁点が含まれるファイル名が『べ』が『へ』と『゛』、『パ』が『ハ』と『゛』に分解されてしまう事象に当たった。
NFD (Normalization Form Decomposition) と NFC (Normalization Form Composition) という形式があるらしい。

NFD

文字と濁点・半濁点を別々に扱う。UTF-8 は UTF-8 でも UTF-8-MAC というエンコーディングらしい。

NFC

文字と濁点・半濁点を1文字として扱う。一般的な UTF-8 なのかな。

NFD → NFC

String のプロパティ precomposedStringWithCanonicalMapping を使う。

let nfdFileName = "レベルに合わせた学習.txt" // 見た目ではわからないが『レへ゛ルに合わせた学習.txt』
let nfcFileName = nfdFileName.precomposedStringWithCanonicalMapping

Next PostPrevious Post