web-dev-qa-db-fra.com

L'origine sur pourquoi '% 20' est utilisé comme espace dans les URL

Je souhaite savoir pourquoi "% 20" est utilisé comme espace dans les URL, en particulier pourquoi% 20 a été utilisé et pourquoi nous en avons même besoin en premier lieu.

35
orange

Cela s'appelle encodage en pourcentage . Certains caractères ne peuvent pas être dans un URI (par exemple #, car il désigne le fragment d'URL), ils sont donc représentés par des caractères pouvant être (# devient %23)

Voici un extrait de ce même article:

Lorsqu'un caractère de l'ensemble réservé (un "caractère réservé") a une signification spéciale (un "objectif réservé") dans un certain contexte, et qu'un schéma d'URI indique qu'il est nécessaire d'utiliser ce caractère à d'autres fins, alors le caractère doit être encodé en pourcentage. L'encodage en pourcentage d'un caractère réservé implique de convertir le caractère en sa valeur d'octet correspondante dans ASCII puis de représenter cette valeur sous la forme d'une paire de chiffres hexadécimaux. Les chiffres, précédés d'un signe de pourcentage ("%") utilisé comme caractère d'échappement, sont ensuite utilisés dans l'URI à la place du caractère réservé (pour un caractère non ASCII, il s'agit de généralement converti en sa séquence d'octets en UTF-8, puis chaque valeur d'octet est représentée comme ci-dessus.)

Le code de caractère du caractère espace est 32:

> ' '.charCodeAt(0)
32

Lequel est 20 en base 16:

> ' '.charCodeAt(0).toString(16)
"20"

Tapez un signe de pourcentage devant et vous obtenez %20.

51
Blender

Parce que les URL ont des règles syntaxiques strictes, comme / étant un caractère de séparation de chemin spécial, les espaces ne sont pas autorisés dans une URL et tous les caractères doivent être un certain sous-ensemble de ASCII. Pour incorporer des caractères arbitraires dans les URL indépendamment de ces restrictions, les octets peuvent être encodés en pourcentage. L'octet x20 représente un espace dans l'encodage ASCII (et la plupart des autres encodages), donc %20 en est la version encodée en URL.

1
deceze

Il utilise un encodage en pourcentage. Vous pouvez voir la partie encodage en pourcentage du RFC pour RI): syntaxe générique

Un mécanisme de codage en pourcentage est utilisé pour représenter un octet de données dans un composant lorsque le caractère correspondant de cet octet est en dehors du
autorisé à définir ou est utilisé comme délimiteur ou dans
composant. Un octet codé en pourcentage est codé en tant que caractère
triplet, composé du pourcentage de pourcentage "%" suivi des deux
chiffres hexadécimaux représentant la valeur numérique de cet octet. Pour
exemple, "% 20" est le pourcentage de codage pour l'octet binaire
"00100000" (ABNF:% x20), qui en US-ASCII correspond à l'espace
caractère (SP).

0
Eren T.