粘贴的 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 中使用 + 代表空格是符合标准的,所以这可能也影响了以这种方式使用 + 字符的其他网站/系统。

1 个赞

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

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

是的,这是一个棘手的问题,我认为只有 oneboxer 和前端存在错误:

https://frinklang.org/fsp/solve2.fsp?equations=a+%2B+b&solveFor=&f=&ev=on>

与:

https://frinklang.org/fsp/solve2.fsp?equations=a+%2B+b&solveFor=&f=&ev=on>

与:

https://frinklang.org/fsp/solve2.fsp?equations=a+%2B+b&solveFor=&f=&ev=on

我这里有一个修复方案,但正如您从相关话题中看到的,这非常复杂™,多年来这个领域出现过很多错误。

1 个赞

感谢您的关注!

您可以相信 Frink 语言的创建者 Alan,他能以 100% 符合标准的方式揭示任何错误。这是他的专长。

(顺便说一句,如果您需要为任何科学或工程应用进行极端的单位正确性验证,请务必了解一下 Frink。)

1 个赞