Javascript escape() in C# – ein C# äquivalent zur escape()-Funktion

csharp_vs_javascriptDas .Net-Framework bietet eine große Anzahl an Möglichkeiten, um HTML-Code und Urls zu encodieren. Da wären zum Beispiel Uri.EscapeDataString(), Uri.EscapeUriString(), System.Web.HttpUtility.UrlEncode(), System.Web.HttpUtility.UrlPathEncode(), System.Web.HttpUtility.HtmlEncode() oder System.Web.HttpUtility.HtmlAttributeEncode().

Wenn man jedoch eine gleichwertige Funktion zu Javascript‘s escape() sucht, so wird man von all diesen Funktionen enttäuscht. Keine dieser standardmäßig vom .Net-Framework mitgelieferten Funktionen ist äquivalent zur Javascript escape()-Funktion.
Zur Verdeutlichung habe ich mal folgendes Beispiel gemacht:

// Original Ausgangsstring
// Raffi's ärgerlicher C# Teststring/Testcode.

// JS Original (erzeugt durch escape() )
// Raffi%27s%20%E4rgerlicher%20C%23%20Teststring/Testcode.

// Uri.EscapeDataString():
// Raffi's%20%C3%A4rgerlicher%20C%23%20Teststring%2FTestcode.

// Uri.EscapeUriString():
// Raffi's%20%C3%A4rgerlicher%20C#%20Teststring/Testcode.

// System.Web.HttpUtility.UrlEncode():
// Raffi%27s+%c3%a4rgerlicher+C%23+Teststring%2fTestcode.

// System.Web.HttpUtility.UrlPathEncode():
// Raffi's%20%c3%a4rgerlicher%20C#%20Teststring/Testcode.

// System.Web.HttpUtility.HtmlEncode():
// Raffi's ärgerlicher C# Teststring/Testcode.

// System.Web.HttpUtility.HtmlAttributeEncode():
// Raffi's ärgerlicher C# Teststring/Testcode.

Doch ich würde nicht darüber bloggen, wenn ich nicht auch eine Lösung parat hätte. Und diese ist gar nicht mal so kompliziert.

Schritt 1:

Fügt eurem Projekt einen Verweis auf Microsoft.JScript hinzu.

microsoft jscript verweis hinzufügen

Schritt 2:

Nun steht euch die Funktion Microsoft.JScript.GlobalObject.escape() zur Verfügung. Diese wandelt einen übergebenen String exakt so um, wie es die Javascript escape()-Funktion auch tut. (Das liegt daran, dass ihr mittels dieser Methode auf die Microsoft eigene JScript-Engine zugreift.) Und mittels dieser Funktion klappt nun auch das oben genannte Beispiel.

// Original Ausgangsstring
// Raffi's ärgerlicher C# Teststring/Testcode.

// JS Original (erzeugt durch escape() )
// Raffi%27s%20%E4rgerlicher%20C%23%20Teststring/Testcode.

// Microsoft.JScript.GlobalObject.escape():
// Raffi%27s%20%E4rgerlicher%20C%23%20Teststring/Testcode.

Ich hoffe ich konnte dem ein oder anderen unter euch weiterhelfen. Kennt ihr vielleicht noch eine andere oder vielleicht bessere Möglichkeit um in C# die Javascipt escape()-Funktion nachzubilden?

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.