Я работаю над веб-приложением asp.net mvc. Теперь у меня есть значение для операционной системы, которая соответствует: -UriBuilder не может кодировать зарегистрированный знак UriBuilder
и я использую следующий код для создания 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?
Благодаря
EDIT Это четко моей проблема .. теперь я передать имя актива valueas £ ££££££ теперь запросу [ «assetName»] получите правильное значение .. но внутри запроса значение будет закодировано неправильно (не будет закодировано с использованием UTF8) !!!
но может вы советуете, в чем проблема в моем случае? –
Чтобы создать правильный URL (стандарт RFC3986), вы должны использовать [Uri.EscapeDataString] (https://msdn.microsoft.com/en-us/library/system.uri.escapedatastring.aspx), в противном случае специальные символы в Юникоде будут закодированный по умолчанию, как в вашем вопросе. –
Но если я заменил "url.Query = query.ToString();" с «Uri.EscapeUriString (HttpUtility.UrlDecode (query.ToString())); я буду сталкиваться с любыми проблемами? ... теперь кажется, что используется «Uri.EscapeUriString (HttpUtility.UrlDecode (query.ToString())); исправит мою проблему для «зарегистрированного знака», но приведет к сбою других символов ... –