6
"strasse".Equals("STRAße",StringComparison.InvariantCultureIgnoreCase)

これは true を返します。どちらが正しい。残念ながら、これらのいずれかを postgres に保存すると、大文字と小文字を区別しない一致 (たとえば、~*) を実行すると、それらは同じではないと見なされます。私もcitextでテストしました。

したがって、1 つの解決策は、ケースを事前に折り畳んで、strasseこれらの値のいずれかを別の列に格納することです。次に、一致するものをインデックス化して検索できます。

C# でケースを折りたたむ方法をしばらく探していましたが、C# で解決策を見つけることができませんでした。これらの文字列を適切に比較できるため、明らかにその知識はそこにありますが、どこから入手できるかわかりません。

1 つの解決策は、perl プロセスを生成し、プロセスperl -E "binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; while (<>) { print fc }"の C# 側をこれらのパイプに対しても utf8 に設定し、perl を介してテキストを送信してケースを折りたたむことです。しかし、それよりも良い方法があるはずです。

4

2 に答える 2