如何比较不敏感的URL?

时间:2013-07-26 16:13:35

标签: .net http string-comparison culture

我正在尝试将发送到我的ASP.NET应用程序的请求URL与大小写不敏感,因为机器人或用户可能会错误地请求非规范形式,我需要重定向它们。

哪种比较模式在语义上是最佳选择?

StringComparison.OrdinalIgnoreCase
StringComparison.InvariantCultureIgnoreCase
StringComparison.CurrentCultureIgnoreCase

Ordinal可能具有限制性,因为它可以进行代码点匹配。可能不会考虑所有语言变化。 CurrentCulture似乎不适合使用网址,因为网址不应该是特定于文化的。 InvariantCulture也没有充分理解,因为它代表了一种在这个星球上不存在的类似英语的文化。我宁愿不将它用于面向用户的字符串,甚至不用于浏览器中的URL。

哪种模式是正确的?

1 个答案:

答案 0 :(得分:1)

正如您所指出的那样,没有完美的解决方案。我一直使用InvariantCulture并对结果感到满意。但是,我的网址通常是英文或英文,因此很难遇到问题。

另一种可能性是编写一个拦截请求的处理程序或模块,并从HTTP头中获取用户的文化。然后它可以使用该文化进行转换。也许

这是你可以永远花在其中的事情之一。我刚刚选择了InvariantCulture,并认为如果我遇到问题,我会重新审视这个决定。到目前为止,没有人注意到。至少,没有人抱怨过它。