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 que JS utilise. Par exemple ce code:
txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Renvoie " %a9%221a"
pour "©√"
au lieu de "%C2%A9%E2%88%9A"
. Il semble que je doive diviser la chaîne en octets ou quelque chose comme ça.
Edit: Ceci est pour une application Windows, les seuls éléments disponibles System.Web
sont: AspNetHostingPermission
, AspNetHostingPermissionAttribute
et AspNetHostingPermissionLevel
.
HttpUtility.HtmlEncode
/ DécoderHttpUtility.UrlEncode
/ DécoderVous pouvez ajouter une référence à l'
System.Web
assemblage si elle n'est pas disponible dans votre projetla source
J'ai essayé de faire un analogue entièrement compatible de l'encodeURIComponent de javascript pour c # et après mes expériences de 4 heures, j'ai trouvé ceci
CODE C #:
le résultat est: !% 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
Après l'avoir décodé avec decodeURLComponent () de Javascript;
vous obtiendrez ceci :! @ # $% ^ & * () _ + du texte ici али мамедов баку
Merci de votre attention
la source
Uri.EscapeDataString("!@#$%^&*()_+ some text here али мамедов баку")
place.Uri.EscapeDataString
encode les caractères '(' et ')' alors que ceHttpUtility.UrlEncode
n'est pas le cas.System.Uri.EscapeUriString () ne semblait rien faire, mais System.Uri.Escape Data String () a fonctionné pour moi.
la source
Essayez
Server.UrlEncode()
, ouSystem.Web.HttpUtility.UrlEncode()
pour les instances où vous n'avez pas accès à l'Server
objet. Vous pouvez également utiliserSystem.Uri.EscapeUriString()
pour éviter d'ajouter une référence à l'System.Web
assemblage.la source
Uri.EscapeUriString()
correspond à JavaScriptencodeURI()
- qui préserve les caractères réservés par URI. tels que/
,&
... tel quel (plus#
), alors - que vous avez découvert, il estUri.EscapeDataString()
correspondant à son JavaScriptencodeURIComponent()
.Pour une application Windows Store, vous n'aurez 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 nom ou une valeur de requête x-www-form-urlencoded , dans un contenu POST:
la source
Vous pouvez utiliser l'objet Server dans l'espace de noms System.Web
Server.UrlEncode, Server.UrlDecode, Server.HtmlEncode et Server.HtmlDecode.
Edit: l'affiche 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 dans System.Web qui doit être ajoutée en tant que référence au projet.
la source