Jak to działa
Kodowanie URL (percent-encoding) zastępuje znaki, które nie mogą pojawić się dosłownie w adresie, sekwencjami %XX z wartością bajtu. Na przykład spacja staje się %20.
Zakres „Komponent” escape'uje też znaki zastrzeżone (= & / ? #): użyj go dla wartości parametru. „Pełny URL” zachowuje strukturę adresu: użyj go dla całego URL.
W formularzach HTML spacja jest kodowana jako + (application/x-www-form-urlencoded); w pozostałych przypadkach stosuje się %20 zgodnie ze standardem RFC 3986.
Przykłady
hola mundo & máshola%20mundo%20%26%20m%C3%A1sZnak „&” jest escape'owany (%26), aby nie pomylić go z separatorem parametrów; „á” jest kodowane w UTF-8 (%C3%A1).a=1&b=2a%3D1%26b%3D2https://sitio.com/á b?x=1 2URL completa: https://sitio.com/%C3%A1%20b?x=1%202W trybie „Pełny URL” zachowywane są ://, / i ?; escape'owane jest tylko to, co zepsułoby adres.Przypadki użycia
- Bezpiecznie tworzyć parametry zapytania podczas ręcznego budowania URL.
- Zakodować wartości zawierające &, =, spacje lub akcenty przed wysłaniem ich w żądaniu GET.
- Zdekodować URL, aby odczytać, jakie wartości niesie każdy parametr.
- Przygotować treści application/x-www-form-urlencoded do wysłania formularzy.
Najczęstsze pytania
Jaka jest różnica między „Komponentem” a „Pełnym URL”?
„Komponent” (encodeURIComponent) escape'uje też =, &, /, ?, # — służy do pojedynczej wartości. „Pełny URL” (encodeURI) zachowuje te znaki strukturalne — służy do całego URL.
Kiedy używa się +, a kiedy %20 dla spacji?
Znak + dotyczy tylko treści formularzy (application/x-www-form-urlencoded). W pozostałej części URL standardem dla spacji jest %20.
Dlaczego „á” staje się %C3%A1, a nie pojedynczym %XX?
Ponieważ jest kodowany w UTF-8: znaki spoza ASCII zajmują kilka bajtów, a każdy bajt jest reprezentowany własną sekwencją %XX.
Czy kodowanie URL czyni go bezpiecznym?
Nie. Sprawia tylko, że jest poprawny na poziomie składni. To nie szyfrowanie i w żaden sposób nie chroni treści.