在过去的许多年里,我在各种在线或离线托管的应用程序和平台上进行了注册。
为什么用户名中不允许使用空格,因为空格对于名称来说非常自然,并且大多数计算系统都可以有效地处理它们。
(许多人可以对其他非法的特殊字符提出类似的问题。但他们的情况更容易理解,因为它们甚至不符合现实世界的命名方案。当然!)
在过去的许多年里,我在各种在线或离线托管的应用程序和平台上进行了注册。
为什么用户名中不允许使用空格,因为空格对于名称来说非常自然,并且大多数计算系统都可以有效地处理它们。
(许多人可以对其他非法的特殊字符提出类似的问题。但他们的情况更容易理解,因为它们甚至不符合现实世界的命名方案。当然!)
我认为实际上这可能是需要打破的约定之一。大多数系统现在处理大量复杂的数据,并用于正确处理包含空格的文本。我很高兴地发现fogbugz(另一个插件)会接受您输入的电子邮件地址、用户名或真实姓名;作为您登录时的用户名。
这只是一个约定,从 8 个字母的文件名和可能还有 8 个字母的用户名开始就仍然存在。我建议您在您的网络应用程序中允许它,让世界跟随您。:)
与用户名中的空格相关的一个微妙问题是空格字符是“不可见的”,两个连续的空格可能看起来非常类似于单个空格。输入两个而不是一个空格引起的错误可能很难发现,这是不允许空格一起出现的原因之一。
某些系统可能不允许使用空格,但仍允许使用不间断空格。聪明的用户可以利用这个事实在他的用户名中包含一个空格。
我想是因为某处的某些代码仍在将输入作为一组空格分隔的参数处理,这与 Windows 命令提示符处理未加引号的文件名的方式非常相似。例如,如果您要将用户名传递给用 C 语言编写的外部可执行进程,其中用户名是在命令行上传递的,它将作为两个参数到达 C 应用程序。
虽然这在实践中可能不会再发生了,就像许多特殊字符一样,我想这是它存在的原因。
我所知道的唯一有意义的原因是,如果您在空格上解析令牌,则在用户名中添加空格会导致它失败。
但是,我确实同意您的观点:在当今的环境中,可能没有太多理由继续这样做,除非遗留兼容性有意义(*nix 等)。
我认为因为通常它倾向于在实际保存输入字段值之前修剪输入字段值,例如在数据库中。
由于我们删除了空格并且如果我们允许它们输入密码或用户名,您可以想象如果用户输入密码为“PWD”将会有一个大问题。
它可以防止混淆相似的名称组合,例如“John Smith”和“JohnSmith”。它还可以更轻松地自动识别出现在文本中的名称。
这取决于它们将在哪里使用。在 unix 用户名中不使用空格是有意义的,原因与在 unix 文件名中不使用空格的原因相同——在命令行中键入它们很痛苦。也就是说,unix 确实允许在用户名和文件名中使用空格。
我认为网络应用程序之类的东西没有理由不允许空间。
实际上,最让我烦恼的是网络应用程序不允许在用户名中使用 @。当它有数百万用户时,我真正想要的名字可用的机会很小,所以我喜欢使用我的电子邮件地址,它至少可以保证是唯一的。