URL高亮不符合规范

附注:当我尝试发帖时,我看到了一个弹出窗口“发生错误:抱歉,新用户每次发帖只能包含 2 个链接。”。我不知道它能阻止什么样的垃圾信息,因为一个链接对大多数垃圾信息发送者来说已经足够了,但现在我不得不将我一些格式精美的 markdown 链接替换为基于文本的脚注。默认 markdown 编辑器中添加脚注本身的过程非常不稳定且令人沮丧,足以单独报告。


附注 2:看起来基于 Markdown 的引用也被计为链接。我将它们删除,改用 Unicode 上标数字。我花了 40 分钟才写完这篇帖子。


根据 STD 66 / RFC 3986¹(人类可读的提取列表²),URL 片段或队列中最多可以有 81 个未转义的字符。此列表由 Swift 编程语言中的“Foundation³”框架按 ASCII 顺序排序:“!`$&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~”

以下是一个包含这些字符的 URL:Example Domain'()*+,-./0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~ 如您所见,高亮显示在某个点被截断了。

在我使用这 81 个字符在片段中编码二进制数据(以 base64 方式,但更紧凑)的项目中工作时,我检查了几个网站上当前符合规范的高亮显示。虽然类似错误在其他地方(例如 GitHub 论坛无法高亮显示最后一个字符,如果它是 ~)不一致地存在,但 Discourse 拥有最广泛的损坏符号选择。某些字符可能会或可能不会根据某些神秘的上下文破坏高亮显示,因此我认为我无法列出全面的列表。

¹ Google rfc/rfc3986.txt
² 查找 Stack Overflow 回答 #26119120
³ 在 Apple > Developer 上查找 documentation/foundation/nscharacterset/urlfragmentallowed


附注 3:一些标准的电子邮件地址也没有被高亮显示。我将使用我的第二个链接链接到 https://e-mail.wtf 获取一些示例。

未高亮显示,但应该高亮显示:

orgmail(to John Doe)@example.com
“:(){ :|:& };:”@example.com
magic@[::1]

1 个赞

欢迎来到我们的社区!

感谢您发布此内容。我认为您报告的并非严格意义上的 Bug,因此已将其移至 #feature。鉴于其技术性很强,它可能更适合放在 Dev 等版块。

这是对新用户的限制,目的是防止“飞来即走”的垃圾邮件发送者发布大量链接。一旦您在这里停留一段时间,此限制将自动解除。在元(meta)这里,我已将链接数量从默认的 2 个 URL 提高到 5 个,因为它确实显得相当严格,而且我们还部署了 AI 反垃圾邮件措施,可以捕获所有垃圾邮件,无论链接数量多少。

如果您对此有进一步的反馈,请随时在 Site feedback 版块发起讨论。