C# asp.net mvc中与asp.net等效的server.htmlencode

C# asp.net mvc中与asp.net等效的server.htmlencode,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我有一个ASP.NET MVC控制器,它正在使用HttpClient类调用另一个服务 var url = "some url"; var client = new HttpClient(); var result= client.GetAsync(url); 我正在发送的URL包含一些特殊字符。如何在ASP.NET MVC控制器中编码特殊字符 谢谢!!1试试这个: url = HttpUtility.UrlEncod

我有一个ASP.NET MVC控制器,它正在使用HttpClient类调用另一个服务

             var url = "some url";
             var client = new HttpClient();
             var result= client.GetAsync(url);
我正在发送的URL包含一些特殊字符。如何在ASP.NET MVC控制器中编码特殊字符

谢谢!!1试试这个:

url = HttpUtility.UrlEncode(url);

从第三版开始,不需要在Razor视图引擎中进行编码,而且非常方便。如果要使用标记,则应使用:

@Html.Raw(myString)

因此,基本上,默认情况下只使用Razor就可以进行编码。

您应该使用HttpUtility.urlpathcode


当您使用url=HttpUtility.UrlEncode(url)时,它对空格不起作用。

当您考虑将作为请求使用的url时(使用
HttpClient.getAsync
)--而不是作为另一个url中的参数--您应该使用

下面是以下URL的三种方法的比较:

var url = "http://some url?data=x y+z&user=1#ok";
http%3a%2f%2fome+url%3fdata%3dx+y%2bz%26用户%3d1%23确定

显然,这是不需要的:URL被损坏,转义了
/
,在路径中输入了
+
,等等。该方法对于URL的查询部分似乎很有用,但对于整个URL则不太有用

y+z&用户=1#正常

这看起来很有用,尽管空间在查询部分有点问题(注意这里断开的超链接,尽管浏览器可以处理它)。但更重要的是,该方法正在被弃用:

不要使用;仅用于浏览器兼容性。使用
UrlEncode


这似乎做得很好:
%20
是所有现代浏览器都应该支持的转义序列,在URL的查询部分也应该支持

谢谢你的回复。但我没有使用任何视图。相反,我正在从我的控制器调用另一个服务。@Brown\u Dynamite好的,您要求在asp.net mvc中使用实用程序,这就是我决定您使用视图的原因。然后使用
HttpUtility.HtmlEncode
而不是UrlEncode,因为它更适合
server.HtmlEncode
。只需添加对project的适当引用。这个答案与上的说明相违背:“不要使用;仅用于浏览器兼容性。使用UrlEncode。”。请考虑删除你的答案,这样人们不会被误导。你有机会测试它吗?当我使用UrlEncode时,我对空格有一个问题。例如:“测试体”编码为Test+Body。但urlpathenced的工作原理与预期一致。请尝试在trincot测试它
Console.WriteLine(HttpUtility.UrlEncode(url));
Console.WriteLine(HttpUtility.UrlPathEncode(url));
Console.WriteLine(Uri.EscapeUriString(url));