清理大小写

sanitize upper vs lower case

是否有理由在清理字符串时将字符转换为 lowercase 而不是 uppercase

我在很多语言中都看到过这种约定,但就我目前的环境而言,我们会说 Rails and/or Javascript

Javascript 有 toLowerCase() 和 toUpperCase()。您可以使用任何一个!

我认为你的问题的答案确实源于几十年前 unix 系统决定使用区分大小写和所有小写命令。这在 Apache 中转换为区分大小写的 url,并且为了交叉 O/S 兼容,我们只是确保所有内容始终为小写。

我想有时可能会使用所有大写字母,但它也令人讨厌 :)

据我所知没有具体原因,但大写和小写都不是 Unicode 世界的全部内容。

例如德文字母ß正好等同于ss;它们都是小写字母,拼写为 ß 的单词也可以拼写为 ss.

相反,在土耳其语中,ı(无点 i)与 i(带点 i)不同,但除非您的语言环境是土耳其语,否则大写任何一个都会产生 I(无点ASCII I).这也改变了意义。您不想使用错误的;它们不等同。

因此,某些编程语言根据 Unicode 标准第 3.13 节中的大小写折叠规则提供更具体的 "case normalizing" 转换; Python 3.3 出于这个原因引入了 str.casefold。它很像 .lower(),但也会将 ß 之类的东西规范化为 ss,因为它们在逻辑上是等价的(如果你正在统一化,你不想处理两个不同的字符串仅在 ßss 中被视为不同)。

如果您的语言没有大小写折叠功能,那么规范化为大写和小写之间的区别主要是约定俗成的。