2007年5月4日金曜日

Unicode正規化 その2

引き続き引用
http://tama-san.com/document04.html
結合文字列が引き起こす様々な問題
これはSafariでGoogle検索をした結果です。なんと「パンダ」の検索結果が475件しかありません。実はこの「パンダ」の文字、フォルダ名をコピペしたものです。「パ」と「ダ」が結合文字列なので、検出されるのは実際に結合文字列を含んだ「パンダ」か「ハンタ」だけというわけです。OS Xユーザで、このようにアイテム名をコピペしてGoogle検索をしたら、検索結果があまりに少なくて当惑した方も多いのではないでしょうか。また、誰もが魅了される素晴らしいパンダのサイトでも、結合文字列を含む「パンダ」を使っていたら、アクセスが増えることは期待できません。

次は、JeditXで結合文字列が混在したテキストをソートしてみました。左がソート前、右がソート後です。同じ字形なのでソートしても並び順が変わらないことを期待するのですが、データが異なるため期待に違う結果になってしまいます。

文字検索に関しても、同じ字形なら同じようにヒットすることを、どのソフトウェアでもサポートしているわけではありません。
これはCotEditorで「u」を「A」に一括置換してみたものです。「0075」が検索対象となって置換されてることが分かります。(CotEditorはとてもよくできたエディタです。この置換結果も決して悪い仕様ではないので、低く評価しないようにしてください)

このように、思いがけない結果になるのが、結合文字列です。とくに1文字に表示できるソフトでは、その文字が結合文字列であることを判別できないので厄介です。それでは、どうしたらこれらを防ぐことができるのでしょうか。

やはりそれには、結合文字列を「単一コードの1文字」に変換するしか方法はないと思います。上の例で言うと、結合文字列「ハ+半濁音」を1文字の「パ」に変換するということです

0 件のコメント: