laquelle de ces deux méthodes devrait être utilisée pour encoder des URL?
Réponses
Trop de publicités?Cela dépend de ce que vous voulez réellement faire.
encodeURI suppose que l'entrée est un URI complet pouvant contenir des caractères nécessitant un codage.
encodeURIComponent va tout encoder avec une signification spéciale, vous l’utilisez donc pour les composants d’URI tels que
var world = "A string with symbols / characters that have special meaning?";
var uri = 'http://example.com/foo?hello=' + encodeURIComponent(world);
http://xkr.us/articles/javascript/encode-compare/ a un grand débat, avec des exemples. Pour citer ce résumé:
"La méthode escape() ne codent pas le caractère+, qui est interprété comme un espace sur le côté serveur ainsi que généré par des formes avec des espaces dans leurs champs. En raison de cette lacune, et le fait que cette fonction ne parvient pas à gérer les caractères non-ASCII correctement, vous devriez éviter d'utiliser de l'évasion() chaque fois que possible. La meilleure alternative est généralement encodeURIComponent().
escape() ne sera pas coder: @*/+
L'utilisation de la encodeURI() la méthode est un peu plus spécialisé que de fuir() en ce qu'il code pour les Uri [REF] par opposition à la chaîne de requête, qui fait partie d'une URL. Utilisez cette méthode lorsque vous avez besoin de coder une chaîne de caractères qui sera utilisée pour toute ressource qui utilise les Uri et les besoins de certains personnages à rester non-codées. Notez que cette méthode ne permet pas de coder le caractère', comme il est un caractère valide dans les Uri.
encodeURI() ne sera pas coder: ~!@#$&*()=:/,;?+'
Enfin, la encodeURIComponent() la méthode doit être utilisée dans la plupart des cas lors de l'encodage d'un seul composant d'un URI. Cette méthode permettra de coder certains caractères qui seraient normalement être reconnus comme des caractères spéciaux pour les Uri ainsi que de nombreux composants peuvent être inclus. Notez que cette méthode ne permet pas de coder le caractère', comme il est un caractère valide dans les Uri.
encodeURIComponent() ne sera pas coder: ~!*()'"