escape encodeURI encodeURIComponent区别

Auteur : Rhubarb
Lien : https://www.zhihu.com/question/21861899/answer/20300871
Source : Zhihu
Le droit d'auteur appartient à l'auteur. Pour une réimpression commerciale, veuillez contacter l'auteur pour autorisation, pour une réimpression non commerciale, veuillez indiquer la source.
 

J'ai écrit un blog avant pour enregistrer leurs différences.

1. Escape et ils ne sont pas du même type

En termes simples, escape encode les chaînes (tandis que les deux autres encodent les URL) pour les rendre lisibles sur tous les ordinateurs.
Le résultat après encodage est sous la forme %XX ou %uXXXX.
Parmi eux, les caractères alphanumériques ASCII @*/+ ne seront pas encodés, et le reste le sera.
La chose la plus importante est que lorsque vous devez encoder une URL, veuillez oublier cette méthode, cette méthode est pour la chaîne, pas pour l'URL.

2. Les encodeURI et encodeURIComponent les plus couramment utilisés

L'encodage des URL est une chose courante, c'est pourquoi ces deux méthodes doivent faire l'objet d'une attention particulière dans la pratique.

Ce sont toutes deux des URL encodées, la seule différence est la plage de caractères encodés, où

La méthode encodeURI n'encodera pas les caractères alphanumériques ASCII pour les caractères suivants ~!@#$&*()=:/,;?+'

La méthode encodeURIComponent n'encode pas les caractères alphanumériques ASCII pour les caractères suivants ~!*() '

Ainsi, encodeURIComponent a une plage d'encodage plus large que encodeURI.

Comme exemple pratique, encodeURIComponent encodera http:// en http%3A%2F%2F alors que encodeURI ne le fera pas.

Troisièmement, la chose la plus importante est quelle méthode doit être utilisée à quelle occasion

1. S'il ne s'agit que d'une chaîne encodée et n'a rien à voir avec l'URL, utilisez l'échappement.

2. Si vous avez besoin d'encoder l'intégralité de l'URL, puis d'utiliser cette URL, utilisez encodeURI.

Par exemple

encodeURI("http://www.cnblogs.com/season-huang/some other thing");

Après encodage, il devient

"http://www.cnblogs.com/season-huang/some%20other%20thing";

Parmi eux, les espaces sont encodés en %20. Mais si vous utilisez encodeURIComponent, le résultat devient

"http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2Fsome%20other%20thing"

Voyez-vous la différence, même le "/" est encodé, et l'URL entière est inutile.

3. Lorsque vous devez encoder les paramètres dans l'URL, encodeURIComponent est le meilleur moyen.

var param = "http://www.cnblogs.com/season-huang/"; //param为参数
param = encodeURIComponent(param);
var url = "http://www.cnblogs.com?next=" + param;
console.log(url) //"http://www.cnblogs.com?next=http%3A%2F%2Fwww.cnblogs.com%2Fseason-huang%2F"

Comme vous pouvez le voir, le "/" dans le paramètre peut être encodé. Si vous utilisez encodeURI, il y aura certainement des problèmes, car le / suivant doit être encodé.

Guess you like

Origin blog.csdn.net/zkcharge/article/details/118894245