我创建了一个应用程序,我需要对用户输入的url中的特殊字符进行编码/解码。
例如:如果用户输入http://en.wikipedia.org/wiki/Å
,则其各自的网址应为http://en.wikipedia.org/wiki/%C3%85
。
我使用以下代码制作了控制台应用程序。
string value = "http://en.wikipedia.org/wiki/Å";
Console.WriteLine(System.Web.HttpUtility.UrlEncode(value));
它成功解码了字符Å
,并且还编码了://
个字符。运行代码后,我得到的输出如下:http%3a%2f%2fen.wikipedia.org%2fwiki%2f%c3%85
但我想要http://en.wikipedia.org/wiki/%C3%85
我该怎么办?
答案 0 :(得分:1)
Uri.EscapeUriString(value)
返回您期望的值。但它可能还有其他问题。
.NET Framework中有一些URL编码函数,它们的行为都不同,在不同情况下很有用:
答案 1 :(得分:0)
您可以使用正则表达式来选择主机名,然后只对其他部分字符串进行urlencode:
var inputString = "http://en.wikipedia.org/wiki/Å";
var encodedString;
var regex = new Regex("^(?<host>https?://.+?/)(?<path>.*)$");
var match = regex.Match(inputString);
if (match.Success)
encodedString = match.Groups["host"] + System.Web.HttpUtility.UrlEncode(match.Groups["path"].ToString());
Console.WriteLine(encodedString);