Vollständiger Leitfaden zur URL-Kodierung: Prozentkodierung – Prinzipien und Praxis
Überblick über die URL-Struktur
https://user:pass@www.example.com:8080/path/to/page?name=张三&age=25#section
└──┬──┘ └────┬────┘ └──────┬──────┘└─┬─┘└────┬─────┘└──────┬──────┘└──┬──┘
scheme userinfo host port path query fragment
Nur die Teile Pfad, Query und Fragment müssen kodiert werden. Scheme und Host folgen ihren eigenen Regeln.
Warum URL-Kodierung notwendig ist
URLs dürfen nur druckbare ASCII-Zeichen enthalten. Folgende müssen kodiert werden:
| Zeichen | Kodierung | Grund |
|---|---|---|
| Leerzeichen | %20 oder + |
Nackte Leerzeichen sind nicht erlaubt |
| Chinesisch「张三」 | %E5%BC%A0%E4%B8%89 |
Nicht-ASCII |
& |
%26 |
Query-Trennzeichen |
= |
%3D |
Schlüssel=Wert-Trennzeichen |
# |
%23 |
Fragment-Markierung |
? |
%3F |
Query-Beginn |
/ |
%2F |
Pfad-Trennzeichen |
Das ToolsKu URL-Kodier-/Dekodier-Tool verwenden
Schritte
- Öffnen Sie das URL-Kodier-/Dekodier-Tool
- Geben Sie eine URL oder Text ein
- Wählen Sie Kodieren oder Dekodieren
- Sehen Sie das Ergebnis
encodeURI vs encodeURIComponent
| Funktion | Nicht kodiert | Anwendungsfall |
|---|---|---|
encodeURI() |
: / ? # [ ] @ ! $ & ' ( ) * + , ; = |
Vollständige URL |
encodeURIComponent() |
A-Z a-z 0-9 - _ . ! ~ * ' ( ) |
URL-Parameterwerte |
const base = 'https://example.com/search';
// ✅ Parameterwerte kodieren
const url = `${base}?q=${encodeURIComponent('hello world')}`;
// → https://example.com/search?q=hello%20world
// ❌ Die gesamte URL kodieren
const wrong = encodeURIComponent('https://example.com/search?q=test');
// → https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dtest
Praktische Szenarien
Chinesische Query-Parameter
Original: https://search.com/q=前端开发
Kodiert: https://search.com/q=%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91
URL-Parameter analysieren
Verwenden Sie das URL-Parse-Tool, um eine URL zu zerlegen und Query-Parameter in einer Tabelle anzuzeigen:
Eingabe: https://api.com/users?name=张三&role=admin&page=1
Ausgabe:
name = 张三
role = admin
page = 1
Internationalisierte Domainnamen (IDN)
Punycode-Kodierung für die chinesische Domain「工具库.com」:
工具库.com → xn--6qq986b3xl.com
Verwenden Sie das Punycode-Tool, um zwischen Formaten zu konvertieren.
Base64-kodierte URL-Parameter
Manchmal müssen Sie ein JSON-Objekt als URL-Parameter kodieren:
{"user":"admin","role":"editor"}
→ Base64 → eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoiZWRpdG9yIn0=
→ URL encode → eyJ1c2VyIjoiYWRtaW4iLCJyb2xlIjoiZWRpdG9yIn0%3D
Häufige Fehler
Doppelte Kodierung
Original: hello world
Einfach kodiert: hello%20world ✅
Doppelt kodiert: hello%2520world ❌ (einmal dekodiert → hello%20world)
Die gesamte URL kodieren
Verwenden Sie encodeURIComponent nur für Parameterwerte, nicht für die vollständige URL.
Leerzeichen: + oder %20?
- In Query-Parametern:
+und%20sind äquivalent - In Pfaden: nur
%20ist gültig - Empfehlung: verwenden Sie konsistent
%20
Zusammenfassung
URL-Kodierung ist eine grundlegende Web-Entwicklungsfähigkeit. Das Verständnis des Unterschieds zwischen encodeURI und encodeURIComponent, UTF-8-Kodierung für chinesische Parameter und Punycode für internationalisierte Domains spart Stunden beim Debuggen. ToolsKu bietet URL-Kodierung/Dekodierung, URL-Parse und Punycode-Tools.