2015-09-09 24 views
6

Ich muss eine URL in einer Klassenbibliothek Assembly, wo ich nicht auf System.Web verweisen möchten. Die URL enthält mehrere RäumeSo erzwingen% 20 anstelle von + in System.Net.WebUtility.UrlEncode

https://query.yahooapis.com/v1/public/yql?q=select * from yahoo.finance.quote where symbol in ("YHOO","AAPL")&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback= 

Wenn ich System.Net.WebUtility.UrlEncode() die Räume mit „+“ ersetzt werden, die nicht funktioniert. Ich brauche sie durch% 20 zu ersetzen

Wie kann ich dies erreichen, ohne System.Web zu referenzieren?

+4

'" + ", die nicht funktioniert Warum nicht? '+' und '% 20' sollten von jedem Code, der die URL-Codierung korrekt interpretieren kann, auf die gleiche Weise interpretiert werden. –

+0

http://stackoverflow.com/questions/1634271/url-encoding-the-space-character-or-20, http://stackoverflow.com/questions/2678551/when-to-encode-space-to-plus -oder-20 – stuartd

+0

Die Yahoo Finance-Abfragesprache interpretiert das "+" nicht als äquivalent zu einem Leerzeichen (% 20). Ich habe die URL manuell in beide Richtungen versucht und mit dem "+" funktioniert es nicht. – ChrisP

Antwort

1

Sie können dies nur tun:

public static string MyUrlEncode(string value) 
{ 
    // Temporarily replace spaces with the literal -SPACE- 
    string url = value.Replace(" ", "-SPACE-"); 
    url = System.Net.WebUtility.UrlEncode(url); 

    // Some servers have issues with (and), but UrlEncode doesn't 
    // affect them, so we include those in the encoding as well. 
    return url.Replace("-SPACE-", "%20").Replace("(", "%28").Replace(")", "%29"); 
} 
11

Sie Uri.EscapeUriString von System Montage versuchen könnte, die eine URI-Zeichenfolge entkommt. Für die Zeichenfolge aus der Frage gibt es zurück:

https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quote%20where%20%20symbol%20in%20(%22YHOO%22,%22AAPL%22)&format=json&diagnostics=true&env=store%253A%252F%252Fdatatables.org%252Falltableswithkeys&callback= 
Verwandte Themen