2012-01-31 19 views
10

http://www.w3schools.com/tags/ref_urlencode.aspcodificar Por qué URL, o qué caracteres para codificar

Desde URL menudo contienen caracteres fuera del conjunto ASCII, la URL tiene para ser convertido en un formato ASCII válidos.

Pero ambos espacio, /,% son parte del conjunto de caracteres ASCII, entonces ¿por qué codificarlos en primer lugar? ¿Qué personajes deberían estar codificados?

+0

caracteres UTF-8, por ejemplo, o cualquier carácter de un conjunto de caracteres diferente. ASCII es casi el rango más pequeño de caracteres. – Halcyon

+0

No estoy seguro, pero creo que todos los caracteres deberían estar codificados, lo que podría tener un significado diferente (por ejemplo & y espacio). No use w3schools.com, no tiene nada que ver con w3c y con frecuencia está equivocado. –

Respuesta

5

Como se indicó, los espacios no son válidos en las URL. La mayoría de los navegadores los codifican automáticamente. Sin embargo ...

La página a la que se ha vinculado tiene un ejemplo con la palabra "Günter" en la sección "Pruébame". Si la palabra "Günter" se enviara como un parámetro querystring, no funcionaría. ya que "ü" no está en el juego de caracteres ASCII estándar.

Está destinado a ser utilizado cuando hay caracteres potencialmente no ASCII. Un ejemplo podría ser cuando se usan datos de una base de datos para crear un hipervínculo. Supongamos que el código crea un enlace a una página de perfil de usuario. Sin codificar, la mía sería:

<a href="profile/?username=David Stratton">Your profile</a> 

mientras Günter habría de

<a href="profile/?username=Günter">Your profile</a> 

mina, la mayoría de los navegadores podría manejar. Günter, probablemente no.

codificados, éstos se convertirían en

<a href="profile/?username=David%20Stratton">Your profile</a> 

y

<a href="profile/?username=G%FCnter">Your profile</a> 

que son URLs válidos.

(Por favor, perdona el hecho de que los sistemas mejor diseñados no pasarían un nombre de usuario en un parámetro de esa manera. Esto fue sólo una muestra para aclarar el concepto.)

+0

Por favor, no solo diga * "no funcionaría" *. Explique al menos lo que hace, por otro lado, si algo sale mal. – yckart

1

Ciertos caracteres, como espacios, deben escaparse para garantizar direcciones URL válidas. Una vez que el lugar donde esto seguramente va a surgir es cuando se generan parámetros GET.

6

Los personajes de una URL deben ser codificados debido a que algunos caracteres tienen un significado especial de acuerdo con URL specification, algunos caracteres no están permitidos y algunos caracteres no son representables en todos los conjuntos de caracteres.

Consulte this intro para obtener más información.

En cuanto a los ejemplos de caracteres que da '/' está reservado para su uso como un separador de componentes en las URL y '%' se utiliza como un carácter de escape.

+0

+1 por especificación/enlaces :-) – The111

Cuestiones relacionadas