粘贴的 URL 在用作空格时处理字符不当(即使是正确使用)

接续自 Rich Text Editor 中粘贴的 URL 未正确转义波浪号字符 的讨论:

重现步骤:

我在编辑器中粘贴了上面的 URL:
https://frinklang.org/fsp/solve2.fsp?equations=a+%3D+3+b+%2B+c&solveFor=&f=&ev=on&sel_a=S&val_a=&sel_b=S&val_b=&sel_c=L&val_c=299792458+m+s%5E-1&resultAs=

点击链接后应有的正确响应是:

但 Discourse 渲染后的该 URL 是:
https://frinklang.org/fsp/solve2.fsp?equations=a%2B%3D%2B3%2Bb%2B%2B%2Bc&solveFor=&f=&ev=on&sel_a=S&val_a=&sel_b=S&val_b=&sel_c=L&val_c=299792458%2Bm%2Bs%5E-1&resultAs=

注意 %2B 替换了 + 字符。这导致失败,并产生以下结果:

测试超链接工具:

Discourse-Made-Hyperlink

Discourse 链接工具渲染的 URL:
https://frinklang.org/fsp/solve2.fsp?equations=a%2B%3D%2B3%2Bb%2B%2B%2Bc&solveFor=&f=&ev=on&sel_a=S&val_a=&sel_b=S&val_b=&sel_c=L&val_c=299792458%2Bm%2Bs%5E-1&resultAs=

这也会失败,显示如下:

我不完全确定哪里出了问题,但我认为问题在于 + 字符,它本应是空格,却被错误地处理成了字面上的加号。

在 URL 中使用 + 代表空格是符合标准的,所以这可能也影响了以这种方式使用 + 字符的其他网站/系统。

其他我认为相关,但现在不这么认为的问题:

https://meta.discourse.org/t/links-produced-by-the-composer-link-modal-break-when-they-contain-a-27/376782/6