Dieser Fragentitel stimmt nicht mit der Frage überein. Um alle Leerzeichen durch% 20 (den Titel) in C # zu ersetzen, können Sie verwenden String.Replace(" ", "%20"). Wenn Sie eine URL erstellen, müssen Sie lediglich einen URL-Wert in eine Zeichenfolge einfügen: string url = "https://site/app/?q=cats"Wenn OP jedoch davon sprach, eine URL als GET-Parameter als Teil einer anderen URL zu übergeben, handelt es sich um etwas völlig anderes, das sich beispielsweise von etwas anderem unterscheidet , Ausgeben einer URL in ein HTML-Ankertag in ASP.NET (oder was auch immer).
@palswim Ja, aber die "akzeptierte" Antwort kann nicht die sein, zu der Sie zurückgekehrt sind: System.Web.HttpUtility.UrlEncodecodiert den Speicherplatz als +und nicht %20, daher ist diese Antwort völlig falsch.
Eregrith
13
Falsche Antwort - Nicht verwenden, UrlEncodeda Leerzeichen durch Leerzeichen ersetzt werden +(anstelle %20dessen das OP ausdrücklich darum gebeten hat), was kein Standard-URI-Schema ist. decodeURIund decodeURIComponentin JavaScript wird dies nicht richtig dekodiert. Verwendung, Uri.EscapeDataStringdie von JavaScript für eine gute Round-Trip-Verwendung von codierten Daten und URIs ordnungsgemäß dekodiert werden kann
Es gibt zumindest in 4.0. System.Web.HttpUtility.UrlDecode ("a% 20b") ergibt "a b"
Abacus
4
Es funktioniert, aber verwenden Sie es nicht, da es für Browser ist. Verwenden Sie stattdessen Uri.EscapeUriString (STRING). MSDN: "Nicht verwenden; nur zur Browserkompatibilität vorgesehen. Verwenden Sie UrlEncode." msdn.microsoft.com/en-us/library/…
VRC
Ich fand es hilfreich, weil ich nur einen Teil der URL codieren wollte, sie aber dennoch anklickbar haben wollte. Diese haben mehr als gewünscht getan: System.Uri.EscapeDataString (url) und HttpContext.Current.Server.UrlEncode (url)
sobelito
2
Ich musste Leerzeichen in% 20 und nicht in + codieren, um erfolgreich auf Twitter zu posten. UrlEncode (url) verwandelt Leerzeichen in + und war daher nicht die richtige Antwort für mein Problem.
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg")
//"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg"
Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg");
//"https://mywebsite.com/api/get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg"//When your url has a query string:
Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg"
Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg");
//"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
Ich musste das auch tun, fand diese Frage vor Jahren, aber der Titel und der Text der Frage stimmen nicht ganz überein, und die Verwendung von Uri.EscapeDataStringoder UrlEncode(bitte nicht verwenden!) Ist normalerweise nicht sinnvoll, es sei denn, wir sprechen über das Bestehen URLs als Parameter zu anderen URLs.
(Übergeben Sie beispielsweise eine Rückruf-URL, wenn Sie eine offene ID-Authentifizierung, Azure AD usw. durchführen.)
In der Hoffnung, dass dies eine pragmatischere Antwort auf die Frage ist: Ich möchte mit C # eine Zeichenfolge in eine URL umwandeln. Es muss etwas im .NET Framework geben, das helfen sollte, oder?
Ja - zwei Funktionen sind hilfreich, um URL-Zeichenfolgen in C # zu erstellen
String.Format zum Formatieren der URL
Uri.EscapeDataString zum Escapezeichen von Parametern in der URL
Dieser Code
String.Format("https://site/app/?q={0}&redirectUrl={1}",
Uri.EscapeDataString("search for cats"),
Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))
Diese können sicher kopiert und in die Adressleiste eines Browsers oder in das srcAttribut eines HTML- ATags eingefügt oder mit curleinem QR-Code usw. verwendet oder in diesen codiert werden.
Und ein JavaScript-Äquivalent wäre so etwas wie das, "https://site/app/?q=" + encodeURIComponent("search for cats") + "&redirectUrl=" + encodeURIComponent("https://mysite/myapp/?state=from idp")was die gleiche Ausgabe erzeugt.
String.Replace(" ", "%20")
. Wenn Sie eine URL erstellen, müssen Sie lediglich einen URL-Wert in eine Zeichenfolge einfügen:string url = "https://site/app/?q=cats"
Wenn OP jedoch davon sprach, eine URL als GET-Parameter als Teil einer anderen URL zu übergeben, handelt es sich um etwas völlig anderes, das sich beispielsweise von etwas anderem unterscheidet , Ausgeben einer URL in ein HTML-Ankertag in ASP.NET (oder was auch immer).Antworten:
Ich glaube, Sie suchen nach HttpServerUtility.UrlEncode .
System.Web.HttpUtility.UrlEncode(string url)
quelle
EscapeUriString()
entkommt&
weder noch=
noch?
,EscapeDataString()
scheint also derjenige zu sein, der verwendet werden soll.System.Web.HttpUtility.UrlEncode
codiert den Speicherplatz als+
und nicht%20
, daher ist diese Antwort völlig falsch.UrlEncode
da Leerzeichen durch Leerzeichen ersetzt werden+
(anstelle%20
dessen das OP ausdrücklich darum gebeten hat), was kein Standard-URI-Schema ist.decodeURI
unddecodeURIComponent
in JavaScript wird dies nicht richtig dekodiert. Verwendung,Uri.EscapeDataString
die von JavaScript für eine gute Round-Trip-Verwendung von codierten Daten und URIs ordnungsgemäß dekodiert werden kannEine andere Möglichkeit ist die Verwendung
Uri.EscapeUriString(stringToEscape)
.quelle
&
Zeichen.=
auch nicht?
. Es scheintUri.EscapeDataString()
der richtige Weg zu sein.#
nichtIch fand es nützlich
System.Web.HttpUtility.UrlPathEncode(string str);
Es ersetzt Leerzeichen durch% 20 und nicht durch +.
quelle
Verwenden Sie, um Leerzeichen sowie den Rest der Sonderzeichen ordnungsgemäß zu entkommen
System.Uri.EscapeDataString(string stringToEscape)
.quelle
Wie in der genehmigten Story kommentiert, ersetzt die HttpServerUtility.UrlEncode- Methode Leerzeichen durch + anstelle von% 20. Verwenden Sie stattdessen eine dieser beiden Methoden: Uri.EscapeUriString () oder Uri.EscapeDataString ()
Beispielcode:
HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg") //"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg" Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg"); //"https://mywebsite.com/api/get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg" //When your url has a query string: Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg"
quelle
Verwenden
HttpServerUtility.UrlEncode
quelle
Ich musste das auch tun, fand diese Frage vor Jahren, aber der Titel und der Text der Frage stimmen nicht ganz überein, und die Verwendung von
Uri.EscapeDataString
oderUrlEncode
(bitte nicht verwenden!) Ist normalerweise nicht sinnvoll, es sei denn, wir sprechen über das Bestehen URLs als Parameter zu anderen URLs.(Übergeben Sie beispielsweise eine Rückruf-URL, wenn Sie eine offene ID-Authentifizierung, Azure AD usw. durchführen.)
In der Hoffnung, dass dies eine pragmatischere Antwort auf die Frage ist: Ich möchte mit C # eine Zeichenfolge in eine URL umwandeln. Es muss etwas im .NET Framework geben, das helfen sollte, oder?
Ja - zwei Funktionen sind hilfreich, um URL-Zeichenfolgen in C # zu erstellen
String.Format
zum Formatieren der URLUri.EscapeDataString
zum Escapezeichen von Parametern in der URLDieser Code
String.Format("https://site/app/?q={0}&redirectUrl={1}", Uri.EscapeDataString("search for cats"), Uri.EscapeDataString("https://mysite/myapp/?state=from idp"))
erzeugt dieses Ergebnis
https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp
Diese können sicher kopiert und in die Adressleiste eines Browsers oder in das
src
Attribut eines HTML-A
Tags eingefügt oder mitcurl
einem QR-Code usw. verwendet oder in diesen codiert werden.quelle
"https://site/app/?q=" + encodeURIComponent("search for cats") + "&redirectUrl=" + encodeURIComponent("https://mysite/myapp/?state=from idp")
was die gleiche Ausgabe erzeugt.HttpUtility.UrlEncode-Methode (Zeichenfolge)
quelle
Der folgende Code ersetzt das sich wiederholende Leerzeichen durch ein einzelnes% 20-Zeichen.
Beispiel:
Eingabe ist:
Code by Hitesh Jain
Ausgabe:
Code%20by%20Hitesh%20Jain
Code
static void Main(string[] args) { Console.WriteLine("Enter a string"); string str = Console.ReadLine(); string replacedStr = null; // This loop will repalce all repeat black space in single space for (int i = 0; i < str.Length - 1; i++) { if (!(Convert.ToString(str[i]) == " " && Convert.ToString(str[i + 1]) == " ")) { replacedStr = replacedStr + str[i]; } } replacedStr = replacedStr + str[str.Length-1]; // Append last character replacedStr = replacedStr.Replace(" ", "%20"); Console.WriteLine(replacedStr); Console.ReadLine(); }
quelle
HttpServerUtility.HtmlEncode
Aus der Dokumentation:
String TestString = "This is a <Test String>."; String EncodedString = Server.HtmlEncode(TestString);
Dies codiert jedoch tatsächlich HTML und keine URLs. Verwenden Sie stattdessen UrlEncode (TestString) .
quelle