Я думаю, вы должны сделать следующее:
- иметь обозначенный "escape" символ -
\
(обратная косая черта) является общим для этого - При кодировании сначала заменитьвсе
\
с \\
и затем все -
с \-
, а затем все пробелы с тире.(порядок важен здесь!) - При декодировании сначала замените все черточки, которым не предшествует
\
, пробелом, затем все \-
на -
, затем все \\
на \
.
Например: скажите, что вас зовут Jo\hn Smith-Jones
(я знаю, что маловероятно, чтобы кто-то имел косую черту в середине своего имени, но ...)
Затем вы кодируете: замените \
на \\
: Jo\\hn Smith-Jones
Теперь замените -
на \-
: Jo\\hn Smith\-Jones
Теперь замените пробелы тире: Joh\\n-Smith\-Jones
(конечный результат)
Это приводит к странным обратным слешам в середине закодированных результатов, но только в том случае, если во-первых была пунктуация, так что это было бы относительно редко.
Подождите,еще одна вещь, о которой я только что подумал.Обратная косая черта может не работать для URL, поэтому, возможно, используйте другой символ - процесс все равно будет таким же, просто замените обратную косую черту на что-либо еще.
Счастливого взлома!