URL-Kodierungs-/Dekodierungstool

Häufig gestellte Fragen

Was ist URL-Kodierung?

URL-Kodierung ist eine Methode, um Zeichen in ein Format umzuwandeln, das über das Internet übertragen werden kann. URLs können nur mit dem ASCII-Zeichensatz über das Internet gesendet werden. Da URLs oft Zeichen außerhalb des ASCII-Sets enthalten, müssen sie konvertiert werden. URL-Kodierung ersetzt unsichere ASCII-Zeichen durch ein '%' gefolgt von zwei hexadezimalen Ziffern.

Wie funktioniert URL-Kodierung?

URL-Kodierung funktioniert durch Ersetzen unsicherer Zeichen mit einem '%' gefolgt von zwei hexadezimalen Ziffern, die die UTF-8-Kodierung des Zeichens darstellen. Zum Beispiel wird das Leerzeichen als %20 kodiert. URLs können keine Leerzeichen enthalten, also werden sie entweder durch ein Pluszeichen (+) oder %20 ersetzt. Andere Sonderzeichen werden durch ihre entsprechenden %xx-Codes ersetzt.

Häufige Zeichen, die URL-Kodierung benötigen

Die folgenden Zeichen müssen bei Verwendung in URLs URL-kodiert werden:

ZeichenURL-kodiertBeschreibung
Space%20Häufigstes Zeichen, das URL-Kodierung erfordert
!%21Ausrufezeichen
"%22Anführungszeichen
#%23Hash-Symbol (verwendet für URL-Fragmente)
$%24Dollarzeichen
%%25Prozentzeichen (URL-Kodierungs-Escape-Zeichen)
&%26Und-Zeichen (verwendet für URL-Parametertrennung)
'%27Apostroph
(%28Öffnende Klammer
)%29Schließende Klammer
+%2BPluszeichen
,%2CKomma
/%2FSchrägstrich (URL-Pfadtrennzeichen)
=%3DGleichheitszeichen (URL-Parameterzuweisung)
?%3FFragezeichen (Beginn der URL-Abfragezeichenfolge)

URL-Kodierung in verschiedenen Programmiersprachen

Hier sind Beispiele für URL-Kodierung und -Dekodierung in verschiedenen Programmiersprachen:

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);

Was ist der Unterschied zwischen encodeURI und encodeURIComponent?

encodeURI() ist darauf ausgelegt, einen vollständigen URI zu kodieren, daher kodiert es keine Zeichen mit besonderer Bedeutung in einer URL, wie /, ?, :, @, &, =, +, $ und #. Im Gegensatz dazu kodiert encodeURIComponent() alle Sonderzeichen, was es geeignet für die Kodierung von Teilen einer URL macht, wie z.B. Abfrage-Parameter. Bei der Kodierung von Abfrageparametern sollte man immer encodeURIComponent() verwenden, um sicherzustellen, dass alle Sonderzeichen korrekt kodiert werden.