Поскольку URI были введены до появления юникода или, по крайней мере, в его широком использовании, я думаю, что это очень специфический для реализации вопрос. UTF-8 кодирует ваш текст, а затем экранирование от обычного звучит как лучшая идея, поскольку это полностью обратно совместимо с любыми существующими системами ASCII / ANSI, хотя вы можете получить один или два странных странных символа.
С другой стороны, чтобы декодировать, вы должны удалить текст и получить строку UTF-8. Если кто-то, использующий более старую систему, попытается отправить ваши данные в ASCII / ANSI, никакого вреда не будет, это уже (почти) кодировка UTF-8.