2015-09-09 11 views
6

Ho bisogno di codificare un URL in un assembly di libreria di classi in cui non voglio fare riferimento a System.Web. L'URL contiene diversi spaziCome forzare% 20 invece di + 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= 

Quando uso System.Net.WebUtility.UrlEncode() gli spazi sono sostituiti con "+", che non funziona. Ho bisogno che vengano sostituiti con% 20

Come posso ottenere ciò senza fare riferimento a System.Web?

+4

'" + "che non funziona' Perché no? '+' e '% 20' dovrebbero essere interpretati allo stesso modo da qualsiasi codice che possa interpretare correttamente la codifica dell'URL. –

+0

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

+0

Il linguaggio di query di Yahoo Finance non interpreta il segno "+" come equivalente a uno spazio (% 20). Ho provato manualmente l'URL in entrambi i modi e con il "+" non funziona. – ChrisP

risposta

1

Si potrebbe semplicemente fare questo:

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

Si potrebbe provare Uri.EscapeUriString da System assemblaggio, che sfugge una stringa URI. Per la stringa dalla domanda restituisce:

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= 
Problemi correlati