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:
Zeichen | URL-kodiert | Beschreibung |
---|---|---|
Space | %20 | Häufigstes Zeichen, das URL-Kodierung erfordert |
! | %21 | Ausrufezeichen |
" | %22 | Anführungszeichen |
# | %23 | Hash-Symbol (verwendet für URL-Fragmente) |
$ | %24 | Dollarzeichen |
% | %25 | Prozentzeichen (URL-Kodierungs-Escape-Zeichen) |
& | %26 | Und-Zeichen (verwendet für URL-Parametertrennung) |
' | %27 | Apostroph |
( | %28 | Öffnende Klammer |
) | %29 | Schließende Klammer |
+ | %2B | Pluszeichen |
, | %2C | Komma |
/ | %2F | Schrägstrich (URL-Pfadtrennzeichen) |
= | %3D | Gleichheitszeichen (URL-Parameterzuweisung) |
? | %3F | Fragezeichen (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.