11
votes

Correctement de l'URL encoder le caractère de l'espace

J'utilise httTputilité.urlencode pour encoder n'importe quelle valeur utilisée dans un itinéraire.

J'ai déjà résolu un problème avec encoder des barres obliques vers l'avant. Le nouveau problème que j'ai maintenant est avec des espaces. Un espace est codé comme +.

Cela fonctionne sur le serveur Web intégré du VS, mais j'ai un problème avec IIS7 sur Windows Server 2008. Si j'ai l'URL http: // localhost / home / à propos / ASDAS + SDASD

I Obtenir l'erreur 404.11 - La demande contient la double séquence d'échappement.

Je sais que je peux simplement remplacer l'espace par "% 20", mais je ne veux pas me soucier du codage de sangueur moi-même. Y a-t-il un urlencodeur prêt à utiliser pour MVC?


0 commentaires

3 Réponses :


20
votes

'' codé à% 20 Utilisez httTputilité.urlpathenCode .


2 commentaires

Cela peut avoir changé, mais la documentation pour URLPathenCode dit maintenant: ne pas utiliser; destiné uniquement à la compatibilité du navigateur. Utiliser system.web.httbuttilité.urlencode (system.string).


Cependant, si vous utilisez UrlenCode, vous obtenez toujours des espaces codés comme +. Et UrlpathenCode n'encore pas # non plus, ils sont donc cassés.



0
votes

Tout codage d'URL est le plus souvent conçu pour fonctionner sur le composant chemin de l'URL, la raison car différents systèmes ont des caractères différents dans la liste de sécurité. Recherchez votre Urlencoder de bibliothèques et utilisez-le simplement sur le chemin et la partie supérieure de l'URL.


0 commentaires

0
votes
@HttpUtility.UrlPathEncode(path)
UrlPathEncode just encodes the path of the Url, rather than encoding the whole Url.

0 commentaires