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èreURL encodéDescription
Space%20Caractère le plus courant nécessitant un encodage URL
!%21Point d'exclamation
"%22Guillemet double
#%23Symbole dièse (utilisé pour les fragments URL)
$%24Signe dollar
%%25Signe pourcentage (caractère d'échappement d'encodage URL)
&%26Esperluette (utilisée pour la séparation des paramètres URL)
'%27Guillemet simple
(%28Parenthèse ouvrante
)%29Parenthèse fermante
+%2BSigne plus
,%2CVirgule
/%2FBarre oblique (séparateur de chemin URL)
=%3DSigne égal (assignation de paramètre URL)
?%3FPoint 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.