Unicodeな文字列の比較しようとしたら大いにハマった….
Unicodeな文字列を比較する場合,同じ表示の文字でも文字のコードが違う場合がある.
例えば,「が」なら「か」+「(濁点)」と分解されていることがある.
これが厄介で,表示上は全く同じものに見えるけど,実際の文字コードが
違うものだから,文字列を検索した時に意図したものと異なる結果になることがある.
これに対処するために,結合した状態の文字列か,分解した状態の文字列か
どちらかに統一する必要がある.統一化の処理を正規化(normalize)と言う.
文字コード周りのライブラリとして有名な「ICU」には正規化の実装があるので,
これを利用することにした.特に実装は難しくない.
が,問題は何故かこれを64bit環境で動かした時に,ICUがエラーを吐いて実行できない….
「あぁでもない,こうでもない」試行錯誤しながら,結局数時間費やした.
でも,結局解決できず.いまいち理由がよくわからん….ううむ….