発生したこと

Windows と Mac が 両方ともアクセスするシステムにおいて、互いの文字列が検索できない、というようなことがありました。

原因

この原因は、同じutf-8でも、様々なタイプがあるからです。
Windowsの utf-8 は 「NFC」、Macは「NFD」です。

同じシステムに windows 側から打ち込んだ文字列と、Mac側から打ち込んだ文字列が混在している時、
それをMac側から検索すると Windows側から打ち込んだ文字列は検索できません。

これは同じ文字列を打ち込んでも、Mac側からはWindows側の文字コードが再現できないからです。

そこで、どちら側からも検索可能になるようにします。
これを Unicode の正規化 といいます。

Javascript における Unicode 正規化

これは非常に簡単です。ある 変数 a と b に入っている文字列を同じ NFC に正規化するには

とします。

このようにして正規化された文字同士ならば、検索が可能になる、というわけです。

最終更新: 2021年11月15日