Я думаю, что раздел 2.2 из RFC 3986 , который устарел RFC 2396 , имеет возможное объяснение.Я цитирую:
Эти символы называются «зарезервированными», потому что они могут (или не могут) определяться как разделители общим синтаксисом, каждым синтаксисом, специфичным для схемы, или синтаксисом, специфичным для реализации.алгоритма разыменования URI.
Я думаю, что Berners-Lee, et al.здесь пытаются понять, что даже если не все зарезервированные символы используются в общем синтаксисе, описанном в RFC, авторы хотели оставить достаточно места для будущих схем или кода реализации, чтобы иметь возможность использовать эти символы так, как они считают нужным.
Что касается того, следует ли вам кодировать эти символы, я считаю, что вы должны исследовать и использовать Алгоритм процентного кодирования , который следует стандарту, а не использовать нестандартный или попробоватькатиться по-своему.Например, если вы используете такой язык, как C # или Python, то библиотеки, поставляемые с этими языками, включают реализацию алгоритма, соответствующую стандартам.Для получения более подробной информации, в разделе 2.4 RFC 3986 описано, когда кодировать или декодировать.