Строка не изменилась, но вы смотрите на нее двумя различными способами.
Способ кодирования 3q#L3t41tGfXQDTaZMbn#w==?f
для содержимого URI - 3q%23L3t41tGfXQDTaZMbn%23w%3D%3D?f
.(На самом деле, это 3q%23L3t41tGfXQDTaZMbn%23w%3D%3D%3Ff
, но вам не нравится, когда ?
ближе к концу не экранирован до %3F
в этом контексте.).
Ваше средство чтения строки, возвращает ее без экранирования.
Все работает очень хорошо, правда.
Когда вам нужно снова написать строку, тогда простоубежать снова:
Service = Uri.EscapeDataString(Service1);