URL-Encoding und -Decoding
Codieren und decodieren Sie URL-Zeichenfolgen, um spezielle Zeichen und Nicht-ASCII-Texte sicher zu behandeln – ideal für Abfrageparameter und Pfadübertragung.
Verwendungsanleitung
URL-Codierung wandelt spezielle Zeichen oder Nicht-ASCII-Zeichen in das Format %XX um, um sie sicher in URLs übertragen zu können.
Verwenden Sie „Codieren“, um Text in eine sichere Form für URLs (z. B. Abfrageparameter) umzuwandeln.
Verwenden Sie „Decodieren“, um %XX-Sequenzen in ihre ursprünglichen Zeichen zurückzuverwandeln.
Häufige Szenarien: Verarbeitung von Abfrageparametern, Formulardatentransfer, API-Aufrufe usw.
Funktionen
- Zwei Codierungsmodi: encodeURIComponent und encodeURI
- Flexibele Leerzeichenbehandlung: als + oder %20 codieren
- Echtzeit-Konvertierung mit Anzeige der Eingabe-/Ausgabelängenstatistik
- Kopier- und Löschtasten sowie bidirektionales Senden an das jeweils andere Panel
- Vollständige Internationalisierung und DaisyUI-Themenunterstützung
Was ist URL-Codierung?
URL-Codierung wandelt Zeichen in %XX-Prozent-Codierungssequenzen um, um sie sicher in URLs zu übertragen.
encodeURIComponent eignet sich für einzelne Komponenten (z. B. einzelne Abfrageparameterwerte) und codiert die meisten Nicht-Alphanumerische Zeichen.
encodeURI eignet sich für vollständige URI-Zeichenketten und codiert keine reservierten Zeichen mit struktureller Bedeutung wie ?, &, =, / .
Häufige Anwendungsfälle
- Erstellung von Abfrageparametern (Suchbegriffe, Filterbedingungen usw.)
- Codierung und Übertragung von Formulardaten per GET/POST
- Codierung von API-Request-Parametern
- Sichere Einbindung von Benutzereingaben in URL-Pfadsegmente
Häufige Fragen und Fallstricke
- encodeURI vs. encodeURIComponent: Für einzelne Komponenten „component“ verwenden, für vollständige URLs „URI“
- Leerzeichen und +: In Anfragesequenzen wird bei application/x-www-form-urlencoded oft + für Leerzeichen verwendet
- Doppelte Dekodierung vermeiden: Mehrfaches Dekodieren kann Daten beschädigen
- Ungültige Prozentsequenzen werfen einen Fehler; Ausnahmen müssen elegant behandelt werden
Wie man URL-Codierung in Programmiersprachen durchführt
JavaScript
Codieren
// Component (recommended for query values)
const encoded = encodeURIComponent(text);
// If you need '+' for spaces in query strings
const encodedPlus = encoded.replace(/%20/g, '+');
// Full URI
const encodedUri = encodeURI(url);
Dekodieren
// Treat '+' as space if needed
const input = plusAsSpace ? s.replace(/\+/g, ' ') : s;
// Component
const dec1 = decodeURIComponent(input);
// Fallback to decodeURI when input is a full URL
const dec2 = decodeURI(input);
PHP
Codieren
// Component (RFC 3986)
$encoded = rawurlencode($text);
// '+' for spaces (application/x-www-form-urlencoded)
$encodedPlus = str_replace('%20', '+', $encoded);
// Full query usage
$query = http_build_query(['q' => '你好 世界', 'type' => 'text']);
Dekodieren
// Component
$decoded = rawurldecode($s);
// If input uses '+' for spaces
$decodedPlus = urldecode($s);
Python
Codieren
from urllib.parse import quote, quote_plus
# Component (RFC 3986)
enc = quote(text, safe='')
# '+' for spaces (application/x-www-form-urlencoded)
enc_plus = quote_plus(text)
Dekodieren
from urllib.parse import unquote, unquote_plus
# Component
dec = unquote(s)
# Input with '+' for spaces
dec_plus = unquote_plus(s)
Go
Codieren
import (
"net/url"
)
// Query component
enc := url.QueryEscape(text) // spaces => +
// Path segment
// go1.8+
// url.PathEscape(text)
Dekodieren
import (
"net/url"
)
// Query component
dec, _ := url.QueryUnescape(s)
// Path segment
// url.PathUnescape(s)
Rust
Codieren
// Cargo.toml: urlencoding = "^2"
use urlencoding::{encode, encode_binary};
let enc = encode(text); // component; spaces => %20
let enc_plus = enc.replace("%20", "+"); // if you need '+' for spaces
Dekodieren
use urlencoding::decode;
// decode treats '+' as space
let dec = decode(s)?; // Result, _>
Java
Codieren
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
// Query param / form style (spaces => '+')
String enc = URLEncoder.encode(text, StandardCharsets.UTF_8);
// For RFC3986-like component encoding, replace '+' with %20 if needed
String encSpace = enc.replace("+", "%20");
Dekodieren
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
// URLDecoder treats '+' as space
String dec = URLDecoder.decode(s, StandardCharsets.UTF_8);