Encoder une URL

Certains caractères ne peuvent pas faire partie d'une URL (par exemple, l'espace), et d'autres ont une signification particulière dans une URL. Dans les formulaires HTML, le caractère = permet de séparer un nom d'une valeur. La syntaxe générique de l'URI utilise l'encodage d'URL pour résoudre ce problème, tandis que les formulaires HTML effectuent des remplacements supplémentaires au lieu d'appliquer un encodage-pourcent à tous ces caractères.

Dans une chaîne, par exemple, les espaces sont soit encodés avec %20, soit remplacés par le signe plus (+). Si vous utilisez une barre verticale (|) comme séparateur, veillez à l'encoder sous la forme %7C. Les virgules d'une chaîne doivent être encodées sous la forme %2C.

Nous vous recommandons d'encoder automatiquement vos URL à l'aide des bibliothèques standards de création d'URL de votre plate-forme pour que les URL soient correctement échappées.

Créer une URL valide

Vous pensez peut-être qu'une URL "valide" va de soi, mais ce n'est pas toujours le cas. Une URL saisie dans une barre d'adresse d'un navigateur, par exemple, peut contenir des caractères spéciaux (comme "上海+中國"). Le navigateur doit alors convertir en interne ces caractères en un autre code avant de les transmettre. Avec le même jeton, tout code qui génère ou accepte le format d'entrée UTF-8 peut considérer comme "valides" les URL contenant des caractères UTF-8, mais il doit convertir ces caractères avant de les envoyer à un serveur Web. Ce processus est appelé encodage d'URL ou encodage-pourcent.

Caractères spéciaux

Nous devons convertir les caractères spéciaux, car toutes les URL doivent respecter la syntaxe de la spécification Uniform Resource Identifier (URI). En fait, les URL doivent contenir un sous-ensemble spécifique de caractères ASCII (symboles alphanumériques courants), ainsi que des caractères réservés et utilisés comme caractères de commande dans les URL. Le tableau ci-dessous récapitule ces caractères :

Récapitulatif des caractères d'URL valides
EnsemblecaractèresUtilisation de l'URL
Alphanumériques a b c d e f g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 Chaînes de texte, utilisation du schéma (http), port (8080), etc.
Non réservés - _ . ~ Chaînes de texte
Réservés ! * ' ( ) ; : @ & = + $ , / ? % # [ ] Caractères de commande et/ou chaînes de texte

Lorsque vous créez une URL valide, vous devez vous assurer qu'elle ne contient que des caractères affichés dans le tableau "Récapitulatif des caractères d'URL valides". Vérifier qu'une URL utilise ce jeu de caractères permet généralement d'identifier deux problèmes (une omission et un remplacement) :

  • Les caractères que vous souhaitez utiliser ne figurent pas dans le tableau ci-dessus. Par exemple, les caractères de certaines langues étrangères (上海+中國, par exemple) doivent être encodés à l'aide des caractères ci-dessus. Selon une pratique courante, les espaces (qui ne sont pas autorisés dans les URL) sont également souvent représentés par le caractère '+'.
  • Des caractères figurent dans le tableau ci-dessus comme des caractères réservés, mais doivent être utilisés littéralement. Par exemple, ? est utilisé dans les URL pour indiquer le début de la chaîne de requête. Si vous souhaitez utiliser la chaîne "? et les Mysterions", vous devez encoder le caractère '?'.

Tous les caractères à encoder en URL le sont à l'aide du caractère '%' et d'une valeur hexadécimale à deux caractères correspondant à leur équivalent UTF-8. Par exemple, 上海+中國 au format UTF-8 serait encodé en URL sous la forme %E4%B8%8A%E6%B5%B7%2B%E4%B8%AD%E5%9C%8B. La chaîne ? and the Mysterians serait encodée en URL sous la forme %3F+and+the+Mysterians ou %3F%20and%20the%20Mysterians.

Caractères courants qui doivent être encodés

Voici quelques caractères courants à encoder :

Caractère non fiable Valeur encodée
Espace %20
" %22
< %3C
> %3E
# %23
% %25
| %7C

Convertir une URL envoyée par un utilisateur peut être difficile. Par exemple, un utilisateur peut saisir une adresse sous la forme "5&rue Longue". Généralement, vous devez créer votre URL à partir des éléments de cette adresse saisie, en traitant chaque entrée utilisateur comme des caractères littéraux.

En outre, les URL sont limitées à 8 192 caractères pour tous les services Web Google Maps Platform et les API Web statiques. Pour la plupart des services, cette limite de caractères est rarement atteinte. Notez toutefois que certains services incluent plusieurs paramètres pouvant accroître la longueur des URL.