【问题标题】:sanitize upper vs lower case [closed]清理大写和小写[关闭]
【发布时间】:2016-03-28 04:38:09
【问题描述】:

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

我在许多语言中都看到过这种约定,但就我当前的环境而言,我们会说Rails 和/或Javascript

【问题讨论】:

  • 消毒到什么? HTML?
  • 这完全取决于您如何进行消毒,并且取决于您。向我们展示您的代码。
  • 我真的没有任何代码本身,这只是我在各种清理方法中注意到的一个约定;作为清理的一部分,它们似乎都将用户输入转换为小写。基本上,我想知道转换为小写与转换为大写是否有任何特定优势。
  • @greetification:一个反例是 HTML 标签名称。它们在 DOM 中是大写的。不,没有优势,除了可读性和对大喊大叫的厌恶。

标签: javascript theory sanitization


【解决方案1】:

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

例如,德语字母ß 完全等价于ss;它们都是小写字母,用ß 拼写的单词也可以用ss 拼写。

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

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

如果您的语言中没有大小写折叠功能,那么规范化为大写和小写之间的区别主要是按照惯例。

【讨论】:

    【解决方案2】:

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

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

    我猜所有的大写字母都可能是并且有时会被使用,但它也很讨厌:)

    【讨论】: