"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 を介してテキストを送信してケースを折りたたむことです。しかし、それよりも良い方法があるはずです。