UriBuilder не может кодировать зарегистрированный знак UriBuilder

Я работаю над веб-приложением asp.net mvc. теперь у меня есть значение для операционной системы, которое равно: -

введите описание изображения здесь

и я использую следующий код для создания URL-адреса, содержащего вышеуказанное значение, следующим образом: -

var query = HttpUtility.ParseQueryString(string.Empty);
query["osName"] = OperatingSystem;


var url = new UriBuilder(apiurl);
url.Query = query.ToString();
string xml = client.DownloadString(url.ToString());

но сгенерированный url будет содержать следующее значение для операционной системы: -

osName=Microsoft%u00ae+Windows+Server%u00ae+2008+Standard

поэтому UriBuilder будет кодировать зарегистрированный знак как %u00ae+, что неверно, поскольку, когда я пытаюсь декодировать %u00ae+ с помощью онлайн-сайта, такого как http://meyerweb.com/eric/tools/dencoder/ он не будет декодировать %u00ae+ как знак регистра??? так может ли кто-нибудь принять участие в этом, пожалуйста, как я могу отправить зарегистрированный знак внутри моего URL-адреса? это проблема в UrilBuilder?

Спасибо

ИЗМЕНИТЬ Это будет ясно излагать мою проблему. теперь я передаю значение имени актива & теперь запрос [ "assetName" ] получит правильное значение.. но внутри запроса значение будет закодировано неправильно (не будет закодировано с использованием UTF8)!!!

введите описание изображения здесь

Ответ 2

Используйте Uri.EscapeDataString() для удаления данных (содержащих любые специальные символы), прежде чем добавлять их в строку запроса