大文字と小文字を区別しないUTF-8文字列比較のさまざまな戦略を評価しようとしています。言語を知らない大文字小文字の区別UTF-8
私はUnicodeコンソーシアムからいくつかの資料を読み、ICUで実験し、さまざまな実装品質の選択肢を考え出しました。
シンプルケースマッピングとフルケースマッピングのテキストが異なることが多々ありますが、その違いを完全に理解したかったと思います。
私が読んだように、シンプル・ケース・マッピングは「文脈自由」です。すなわち、ペイロードがどの言語かを知る必要はありません。トルコの「I /ı/İ/ i」の惨事のために、これはおおよその結果を与えるでしょう。
フル・ケース・マッピングは、一方で、マッピングを実行できるようにペイロードの言語を知る必要があります。その追加情報を使って、トルコ文字列の "金"を大文字で "KIM"、英語文字列である "金"が大文字で "KIM"になるように特別な対策を講じることができる。
私はそれを得ましたか?
異なる言語で異なる折り畳みの「マルチファセット」コードポイントの他の例はありますか?
ありがとうございます!
更新:言語に依存しない単純なケースマッピングに言及している情報源の1つはICU's documentationです。私はそれをUnicodeの真実と解釈しましたが、実装のステートメントだけかもしれません。
彼らはどちらも言語の文脈を必要としていますよね?私は、CaseFolding.txtを使用せず、UnicodeData.txtのケース情報のみを使用するサードパーティ製のライブラリ(PCRE)を使用し、言語コンテキスト(明示的にも暗黙的にも、私が知る限り)を必要としません。私はそれがシンプルなケースでは有効な妥協であったかもしれないと考えました。 –
絶対に。ファイルに記載されているように、 "T"ステータスコードのレコードを無視するタイミングを知る必要があります。 –
私が見る限り、T状態コードはCaseFoldingに表示されます。UnicodeData.txtではなく、txtです。しかし、本当にあなたはフォールディングが言語の文脈の知識でしか行えないと言っていますか?私は文脈を必要としない妥協案を探していますが、100%完璧ではありません...しかし、それは暖かさへの道の第一歩でしょうか? –