2011-03-21 7 views
1

Je veux encoder des adresses e-mail. J'ai entré "[email protected]" sur w3schools, mais il n'a pas codé "@" ou ".". J'utilise encodeURI() et j'ai les mêmes résultats. Que se passe-t-il?URLEncode - le faire fonctionner comme je veux

Au moins, je suppose qu'il ne codait pas parce que je vois dans Firebug onglet Net:

GET http://dev:8989/SJMUserManager/Service/Index/[email protected]

Je pensais voir

GET http://dev:8989/SJMUserManager/Service/Index/bmackey%40foo%2Ecom

+6

[. S'il vous plaît ne pas fréquenter W3Schools] (http://w3fools.com) – Pointy

+1

Le '' @ a été codé à '% 40' quand j'ai essayé. Le point n'était pas. Vous pouvez essayer encodeURIComponent() pour obtenir ce dont vous avez besoin. –

+0

@Pointy - merci que l'information est utile, mais seulement légèrement applicable à la question. "J'utilise encodeURI() et j'ai les mêmes résultats". –

Répondre

4

@ et . ne sont pas des caractères spéciaux dans les URIs HTTP.

Les caractères nécessitant un codage incluent l'espace (qui devient +), + lui-même et %, qui est utilisé pour le codage hexadécimal.

D'autres caractères en dehors de la plage normale ASCII de 32 à 127 et d'autres caractères de cette plage utilisent le codage hexadécimal %.

Pour une gestion correcte, vous devez envisager d'utiliser encodeURIComponent() mais seulement sur la partie de l'URI fournie par l'utilisateur. Si vous codez l'URI entière de cette façon, vous obtiendrez un URI invalide.

2

Vous pouvez essayer d'utiliser encodeURIComponent à la place.

encodeURIComponent('GET http://dev:8989/SJMUserManager/Service/Index/[email protected]') 

Retour:

"GET%20http%3A%2F%2Fdev%3A8989%2FSJMUserManager%2FService%2FIndex%2Fbmackey%40foo.com" 
Questions connexes