En JavaScript:
encodeURIComponent("©√") == "%C2%A9%E2%88%9A"
Existe-t-il un équivalent pour les applications C #? Pour échapper des caractères HTML, j'ai utilisé:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Mais je ne sais pas comment convertir la correspondance au format hexadécimal correct utilisé par JS. Par exemple ce code:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Résultats "%a9%221a"
pour "©√"
au lieu de "%C2%A9%E2%88%9A"
. Il semble que j'ai besoin de diviser la chaîne en octets ou quelque chose d'autre.
Modifier: il s’agit d’une application Windows, les seuls éléments disponibles dans System.Web
sont: AspNetHostingPermission
, AspNetHostingPermissionAttribute
et AspNetHostingPermissionLevel
.
Uri.EscapeDataString
Ou HttpUtility.UrlEncode
Est le moyen approprié d'échapper à une chaîne censée faire partie d'une URL.
Prenons par exemple la chaîne "Stack Overflow"
:
HttpUtility.UrlEncode("Stack Overflow")
-> "Stack+Overflow"
Uri.EscapeUriString("Stack Overflow")
-> "Stack%20Overflow"
Uri.EscapeDataString("Stack + Overflow")
-> Encode également "+" to "%2b"
----> Stack%20%2B%20%20Overflow
Seul le dernier est correct lorsqu'il est utilisé en tant que partie réelle de l'URL (par opposition à la valeur de l'un des paramètres de la chaîne de requête)
HttpUtility.HtmlEncode
/DécoderHttpUtility.UrlEncode
/Décoder
Vous pouvez ajouter une référence à la System.Web
Assembly si ce n'est pas disponible dans votre projet
J'ai essayé de faire l'analogue entièrement compatible d'encodecomposant de javascript pour c # et après mes expériences de 4 heures j'ai trouvé ceci
c # CODE:
string a = "!@#$%^&*()_+ some text here али мамедов баку";
a = System.Web.HttpUtility.UrlEncode(a);
a = a.Replace("+", "%20");
le résultat est le suivant: !% 40% 23% 24% 25% 5e% 26 * () _% 2b% 20some% 20text% 20ici% 20% d0% b0% d0% bb% d0% b8% 20% d0% bc% d0% b0% d0% bc% d0% b5% d0% b4% d0% être% d0% b2% 20% d0% b1% d0% b0% d0% ba% d1% 8
Après l'avoir décodé avec le script Javascript decodeURLComponent ();
vous obtiendrez ceci: ! @ # $% ^ & * () _ + du texte ici али мамедов баку
Merci de votre attention
System.Uri.EscapeUriString () n'a apparemment rien fait, mais System.Uri.Escape Data String () a fonctionné pour moi.
Essayez Server.UrlEncode()
ou System.Web.HttpUtility.UrlEncode()
pour les cas où vous n'avez pas accès à l'objet Server
. Vous pouvez également utiliser System.Uri.EscapeUriString()
pour éviter d'ajouter une référence à la commande System.Web
Assemblée.
Pour une application Windows Store, vous n'avez pas HttpUtility. Au lieu de cela, vous avez:
Pour un URI, avant le '?':
Pour un nom ou une valeur de requête URI, après le '?':
Pour un --- ou nom de requête x-www-form-urlencoded , dans un POST content):
Vous pouvez utiliser l'objet Serveur dans l'espace de noms System.Web.
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode et Server.HtmlDecode.
Edit: poster a ajouté qu'il s'agissait d'une application Windows et non d'une application Web, comme on pourrait le croire. Les éléments répertoriés ci-dessus seraient disponibles à partir de la classe HttpUtility de System.Web, qui doit être ajoutée en tant que référence au projet.