Outil d'Encodage/Décodage URL
Questions Fréquemment Posées
Qu'est-ce que l'encodage URL ?
L'encodage URL est une méthode pour convertir des caractères dans un format qui peut être transmis sur Internet. Les URL ne peuvent être envoyées sur Internet qu'en utilisant le jeu de caractères ASCII. Comme les URL contiennent souvent des caractères en dehors de l'ensemble ASCII, elles doivent être converties. L'encodage URL remplace les caractères ASCII non sécurisés par un '%' suivi de deux chiffres hexadécimaux.
Comment fonctionne l'encodage URL ?
L'encodage URL fonctionne en remplaçant les caractères non sécurisés par un '%' suivi de deux chiffres hexadécimaux représentant l'encodage UTF-8 du caractère. Par exemple, le caractère espace est encodé sous la forme %20. Les URL ne peuvent pas contenir d'espaces, ils sont donc remplacés par un signe plus (+) ou %20. Les autres caractères spéciaux sont remplacés par leur code %xx correspondant.
Caractères courants qui nécessitent un encodage URL
Les caractères suivants nécessitent un encodage URL lorsqu'ils sont utilisés dans les URL :
Caractère | URL encodé | Description |
---|---|---|
Space | %20 | Caractère le plus courant nécessitant un encodage URL |
! | %21 | Point d'exclamation |
" | %22 | Guillemet double |
# | %23 | Symbole dièse (utilisé pour les fragments URL) |
$ | %24 | Signe dollar |
% | %25 | Signe pourcentage (caractère d'échappement d'encodage URL) |
& | %26 | Esperluette (utilisée pour la séparation des paramètres URL) |
' | %27 | Guillemet simple |
( | %28 | Parenthèse ouvrante |
) | %29 | Parenthèse fermante |
+ | %2B | Signe plus |
, | %2C | Virgule |
/ | %2F | Barre oblique (séparateur de chemin URL) |
= | %3D | Signe égal (assignation de paramètre URL) |
? | %3F | Point d'interrogation (début de la chaîne de requête URL) |
Implémentation de l'encodage URL dans différents langages de programmation
Voici des exemples d'encodage et de décodage URL dans divers langages de programmation :
Go
package main
import (
"fmt"
"net/url"
)
func main() {
// Encode a URL
text := "Hello World! Special chars: &?=/";
encoded := url.QueryEscape(text)
fmt.Println("Encoded:", encoded)
// Decode a URL
decoded, err := url.QueryUnescape(encoded)
if err == nil {
fmt.Println("Decoded:", decoded)
}
}
C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
// Function to URL-encode a string
char *url_encode(char *str) {
char *encoded = malloc(strlen(str) * 3 + 1);
char *pstr = str;
char *pbuf = encoded;
while (*pstr) {
if (isalnum(*pstr) || *pstr == '-' || *pstr == '_' || *pstr == '.' || *pstr == '~') {
*pbuf++ = *pstr;
} else if (*pstr == ' ') {
*pbuf++ = '+';
} else {
sprintf(pbuf, "%%%.2X", *pstr);
pbuf += 3;
}
pstr++;
}
*pbuf = '\\0';
return encoded;
}
int main() {
char *text = "Hello World! Special chars: &?=/";
char *encoded = url_encode(text);
printf("Original: %s\\n", text);
printf("Encoded: %s\\n", encoded);
free(encoded);
return 0;
}
PHP
<?php
// URL encoding
$text = "Hello World! Special chars: &?=/";
$encoded = urlencode($text);
echo "Encoded: " . $encoded . "\\n";
// URL decoding
$decoded = urldecode($encoded);
echo "Decoded: " . $decoded . "\\n";
?>
Python
import urllib.parse
# URL encoding
text = "Hello World! Special chars: &?=/"
encoded = urllib.parse.quote(text)
print(f"Encoded: {encoded}")
# URL decoding
decoded = urllib.parse.unquote(encoded)
print(f"Decoded: {decoded}")
JavaScript
// URL encoding
const text = "Hello World! Special chars: &?=/";
const encoded = encodeURIComponent(text);
console.log("Encoded:", encoded);
// URL decoding
const decoded = decodeURIComponent(encoded);
console.log("Decoded:", decoded);
TypeScript
// URL encoding
const text: string = "Hello World! Special chars: &?=/";
const encoded: string = encodeURIComponent(text);
console.log("Encoded:", encoded);
// URL decoding
const decoded: string = decodeURIComponent(encoded);
console.log("Decoded:", decoded);
Quelle est la différence entre encodeURI et encodeURIComponent ?
encodeURI() est conçu pour encoder un URI complet, il n'encode donc pas les caractères qui ont une signification spéciale dans une URL, comme /, ?, :, @, &, =, +, $ et #. En revanche, encodeURIComponent() encode tous les caractères spéciaux, ce qui le rend approprié pour encoder des parties d'une URL, comme les paramètres de requête. Lors de l'encodage des paramètres de requête, utilisez toujours encodeURIComponent() pour vous assurer que tous les caractères spéciaux sont correctement encodés.