発生したこと
Windows と Mac が 両方ともアクセスするシステムにおいて、互いの文字列が検索できない、というようなことがありました。
原因
この原因は、同じutf-8でも、様々なタイプがあるからです。
Windowsの utf-8 は 「NFC」、Macは「NFD」です。
同じシステムに windows 側から打ち込んだ文字列と、Mac側から打ち込んだ文字列が混在している時、
それをMac側から検索すると Windows側から打ち込んだ文字列は検索できません。
これは同じ文字列を打ち込んでも、Mac側からはWindows側の文字コードが再現できないからです。
そこで、どちら側からも検索可能になるようにします。
これを Unicode の正規化 といいます。
Javascript における Unicode 正規化
これは非常に簡単です。ある 変数 a と b に入っている文字列を同じ NFC に正規化するには
1 2 |
a = "文字" a_n = a. normalize("NFC") |
とします。
このようにして正規化された文字同士ならば、検索が可能になる、というわけです。