10

我正在开发一个 asp.net mvc web 应用程序。现在我的操作系统值等于:-

在此处输入图像描述

我正在使用以下代码构建一个包含上述值的 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+为注册符号???那么任何人都可以对此提出建议,我如何在我的网址中发送注册标志?这是 UrilBuilder 中的问题吗?

谢谢

编辑 这将清楚地说明我的问题.. 现在我将资产名称值传递为 £ ££££££ 现在查询 [“assetName”] 将获得正确的值.. 但在查询中,值将被错误编码(将不能使用 UTF8 编码)!!!

在此处输入图像描述

4

2 回答 2

5

尝试这个:

url.Query = Uri.EscapeUriString(HttpUtility.UrlDecode(query.ToString()));

正如这里提到的HttpUtility.ParseQueryString() 总是将特殊字符编码为 un​​icode

于 2016-08-05T12:37:02.733 回答
0

用于Uri.EscapeDataString()在将数据添加到查询字符串之前转义数据(包含任何特殊字符)

于 2016-08-12T12:08:11.163 回答