Вставленные URL-адреса некорректно обрабатывают символы «+», когда они используются (правильно) в качестве пробелов

Продолжение обсуждения из Pasted URLs in Rich Text Editor improperly escape tilde character:

Воспроизведение:

Я вставил следующую ссылку выше, скопировав её в редактор:
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=
Ожидаемый результат при клике на ссылку:

Однако версия URL, отрендеренная в Discourse, выглядит так:
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

URL, отрендеренный инструментом создания ссылок в Discourse:
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=

Это также не работает, результат выглядит так:

Я не на 100% уверен, в чём именно проблема, но полагаю, что дело в символах +, которые должны обозначать пробелы, но ошибочно обрабатываются как буквальный знак плюс.

Использование + вместо пробела в URL соответствует стандартам кодирования форм HTML, поэтому эта проблема может затрагивать и другие сайты/системы, использующие символ + таким образом.

См.: WHATWG. HTML Living Standard. Раздел «URL-encoded form data». HTML Standard

1 лайк

Другие проблемы, которые я сначала считал связанными, но теперь думаю, что это не так:

Да, это довольно запутанный случай. Похоже, проблема только в onebox и баге на фронтенде:

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

У меня есть исправление, но, как вы можете увидеть в разделе «Связанные темы», это ОЧЕНЬ СЛОЖНО :tm:, за эти годы в этой области накопилось столько багов.

1 лайк

Спасибо за внимание!

Вы можете доверять Алану, создателю языка Frink, в том, что он выявит любую ошибку, оставаясь на 100% совместимым со стандартами. Это его профессиональная деятельность.

(Кстати, если вам когда-либо понадобится предельная точность работы с единицами измерения для любого научного или инженерного приложения, обязательно обратите внимание на Frink.)

1 лайк