In JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Gibt es ein Äquivalent für C # -Anwendungen? Um HTML-Zeichen zu entkommen, habe ich Folgendes verwendet:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Ich bin mir jedoch nicht sicher, wie ich die Übereinstimmung in das von JS verwendete korrekte Hexadezimalformat konvertieren soll. Zum Beispiel dieser Code:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Gibt " %a9%221a"
für "©√"
statt" zurück "%C2%A9%E2%88%9A"
. Es sieht so aus, als müsste ich die Zeichenfolge in Bytes oder ähnliches aufteilen.
Edit: Dies ist eine Windows - Anwendung, die nur Elemente in System.Web
sind: AspNetHostingPermission
, AspNetHostingPermissionAttribute
und AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ DecodierenHttpUtility.UrlEncode
/ DecodierenSie können der
System.Web
Assembly einen Verweis hinzufügen, wenn dieser in Ihrem Projekt nicht verfügbar istquelle
Ich habe versucht, ein vollständig kompatibles Analogon der encodeURIComponent von Javascript für c # zu erstellen, und nach meinen 4-stündigen Experimenten habe ich dies gefunden
c # CODE:
das Ergebnis ist : !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20text% 20here% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% bc% d0% b5% d0% b4% d0% be% d0% b2% 20% d0% b1% d0% b0% d0% ba% d1% 83
Nachdem Sie es mit der decodeURLComponent () von Javascript dekodiert haben;
Sie erhalten Folgendes : ! @ # $% ^ & * () _ + Text hier али мамедов баку
Vielen Dank für die Aufmerksamkeit
quelle
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
stattdessen einfach verwenden .Uri.EscapeDataString
codiert die Zeichen '(' und ')', währendHttpUtility.UrlEncode
dies nicht der Fall ist.System.Uri.EscapeUriString () schien nichts zu tun, aber System.Uri.Escape Data String () funktionierte für mich.
quelle
Versuchen Sie es
Server.UrlEncode()
oderSystem.Web.HttpUtility.UrlEncode()
in Fällen, in denen Sie keinen Zugriff auf dasServer
Objekt haben. Sie können auchSystem.Uri.EscapeUriString()
vermeiden, dass derSystem.Web
Assembly ein Verweis hinzugefügt wird .quelle
Uri.EscapeUriString()
JavaScript entspricht, beiencodeURI()
dem URI-reservierte Zeichen beibehalten werden. wie/
,&
... wie sie ist (plus#
), während - wie Sie entdeckt haben, ist es ,Uri.EscapeDataString()
dass entspricht JavaScript istencodeURIComponent()
.Für eine Windows Store-App steht HttpUtility nicht zur Verfügung. Stattdessen haben Sie:
Für eine URI vor dem '?':
Für einen URI-Abfragenamen oder -wert nach dem '?':
Für einen x-www-form-urlencodierten Abfragenamen oder -wert in einem POST-Inhalt:
quelle
Sie können das Server-Objekt im System.Web-Namespace verwenden
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode und Server.HtmlDecode.
Bearbeiten: Poster fügte hinzu, dass dies eine Windows-Anwendung und keine Web-Anwendung war, wie man glauben würde. Die oben aufgeführten Elemente sind in der HttpUtility-Klasse in System.Web verfügbar, die als Referenz zum Projekt hinzugefügt werden muss.
quelle