Vollständiger Leitfaden zur URL-Kodierung: Prozentkodierung – Prinzipien und Praxis

Kodierung

Ü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

  1. Öffnen Sie das URL-Kodier-/Dekodier-Tool
  2. Geben Sie eine URL oder Text ein
  3. Wählen Sie Kodieren oder Dekodieren
  4. 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 %20 sind äquivalent
  • In Pfaden: nur %20 ist 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.

#URL#编解码#百分号编码#查询参数#Web