escape encodeURI encodeURIComponent区别

Autor: Ruibarbo
Enlace: https://www.zhihu.com/question/21861899/answer/20300871
Fuente: Zhihu
Los derechos de autor pertenecen al autor. Para reimpresión comercial, comuníquese con el autor para obtener autorización, para reimpresión no comercial, indique la fuente.
 

Escribí un blog antes para registrar sus diferencias.

1. Escape y no son del mismo tipo

En pocas palabras, escape codifica cadenas (mientras que los otros dos codifican URL) para que sean legibles en todas las computadoras.
El resultado después de la codificación tiene la forma de %XX o %uXXXX.
Entre ellos, los caracteres de ASCII alfanuméricos @*/+ no se codificarán y el resto sí.
Lo más importante es que, cuando necesite codificar una URL, olvide este método, este método es para cadena, no para URL.

2. Los encodeURI y encodeURIComponent más utilizados

La codificación de URL es algo común, por lo que se debe prestar especial atención a estos dos métodos en la práctica.

Ambos son URL codificados, la única diferencia es el rango de caracteres codificados, donde

El método encodeURI no codificará alfanuméricos ASCII para los siguientes caracteres ~!@#$&*()=:/,;?+'

El método encodeURIComponent no codifica caracteres alfanuméricos ASCII para los siguientes caracteres ~!*()'

Entonces, encodeURIComponent tiene un rango de codificación más amplio que encodeURI.

Como ejemplo práctico, encodeURIComponent codificará http:// en http%3A%2F%2F mientras que encodeURI no lo hará.

En tercer lugar, lo más importante es qué método debe usarse en qué ocasión.

1. Si es solo una cadena codificada y no tiene nada que ver con la URL, use escape.

2. Si necesita codificar la URL completa y luego usar esta URL, use encodeURI.

Por ejemplo

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

Después de codificar se convierte en

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

Entre ellos, los espacios se codifican como %20. Pero si usa encodeURIComponent, el resultado se convierte en

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

¿Ves la diferencia? Incluso el "/" está codificado y la URL completa es inútil.

3. Cuando necesite codificar los parámetros en la URL, encodeURIComponent es la mejor manera.

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"

Como puede ver, el "/" en el parámetro se puede codificar. Si usa encodeURI, debe haber un problema, porque el siguiente / debe codificarse.

Supongo que te gusta

Origin blog.csdn.net/zkcharge/article/details/118894245
Recomendado
Clasificación