3

为什么 reddit 使用 base36 作为文章 ID?

例如:

a2xki

4

4 回答 4

16

可能是因为:

Base 36 是...使用 ASCII 字符的最紧凑的不区分大小写的字母数字系统

通过仅使用字母数字字符并且不区分大小写,可以避免两种类型的错误:输入错误的大小写(或文件系统问题和因区分大小写而引起的混淆),以及 URL 中的特殊字符。当 URL 包含根据RFC 2396保留的字符时,必须对这些字符进行转义(这会拉长和丑化 URL)。但是各种应用程序级别的错误甚至还利用了诸如和不受欢迎的未保留字符(一些示例: 1 2 3)。'!

即使有字母数字和区分大小写的限制,base 36 显然提供了比十进制更紧凑的表示,允许短且(可以说)看起来干净的 ID。这篇文章的 ID十进制为 36351705;以基数 36 表示时,它少了 3 个字符。

于 2009-11-11T04:13:17.027 回答
5

第二个 Just Some Guy(你可以用 [a-z0-9] 表示),另外,

  1. 这个方案应该产生非常短的 ID。
  2. 易于使用这些 ID 在磁盘结构上创建。
  3. 易于转换为数字 ID 以查找数据库等。
于 2009-11-11T04:16:54.943 回答
2

很容易通过电子邮件、口头、聊天窗口等方式提供给其他人。URL 肯定会允许更多字符,但这不会令人困惑,特别是如果您必须通过电话、视频、电视或其他方式阅读链接时甚至从印刷的文章或报纸上输入。

这是非常人性化的。

于 2009-11-11T04:19:55.803 回答
1

因为您很可能可以用 [a-z0-9] 来表示它。

于 2009-11-11T04:10:38.287 回答