"strasse".Equals("STRAße",StringComparison.InvariantCultureIgnoreCase)
这返回真。哪个是对的。不幸的是,当我将其中一个存储在 postgres 中时,它认为在进行不区分大小写的匹配时它们是不一样的(例如, with ~*
)。我也用 citext 测试过。
因此,一种解决方案是预先折叠案例,从而将strasse
这些值中的任何一个存储在另一列中。然后我可以索引并搜索匹配项。
我一直在寻找如何在 C# 中折叠大小写,但一直无法在 C# 中找到解决方案。显然,知识是存在的,因为它可以正确比较这些字符串,我只是找不到从哪里得到它。
一种解决方案是生成一个 perl 进程perl -E "binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; while (<>) { print fc }"
,将这些管道的 C# 端也设置为 utf8,然后通过 perl 发送文本以折叠案例。但必须有比这更好的方法。