Koder URL
Zakoduj tekst procentowo, aby mógł bezpiecznie trafić do adresu URL, w całości w przeglądarce.
Działa w całości w twojej przeglądarce. Nic nie jest wysyłane, logowane ani przechowywane.
Adres URL ma swoją gramatykę, a znaki, które do niej należą – "?", "&", "/", "#", spacje – trzeba poprzedzić znakiem ucieczki, gdy są częścią wartości, a nie struktury. To escapowanie nazywa się kodowaniem procentowym.
Jak to działa
Każdy znak spoza zbioru niezarezerwowanego z RFC 3986 – litery, cyfry, "-", ".", "_" i "~" – zostaje zastąpiony znakiem procentu i wartością szesnastkową każdego ze swoich bajtów UTF-8. Spacja staje się %20, a litera z polskim znakiem diakrytycznym daje dwie sekwencje, bo w UTF-8 zajmuje dwa bajty.
Styl danych formularza istnieje, bo wysyłanie formularzy HTML jest starsze od tej reguły: tam spacja to "+", a "~" także jest kodowana. Wybierz go, gdy budujesz treść application/x-www-form-urlencoded, a styl składnika URL do wszystkiego innego.
Przykłady
| Przypadek | Dane wejściowe | Wynik |
|---|---|---|
| Fraza wyszukiwania w query stringu | coffee & cake | coffee%20%26%20cake |
| Ta sama fraza jako dane formularza | coffee & cake | coffee+%26+cake |
Najczęściej zadawane pytania
Czy mam tym kodować cały adres URL?
Nie. Zakodowanie całego adresu URL zamienia też "://" i separatory, a w efekcie zostaje ciąg, za którym żaden klient nie pójdzie. Zakoduj każdą wartość osobno, a potem złóż z nich adres URL.
Dlaczego tutaj "!" jest kodowany, a konsola mojej przeglądarki zostawia go bez zmian?
Funkcja encodeURIComponent w JavaScripcie celowo pomija "!", "'", "(", ")" i "*", choć RFC 3986 je rezerwuje. Ich zakodowanie jest zawsze akceptowane i zapobiega niespodziankom z bardziej rygorystycznymi parserami, więc to narzędzie je koduje.
A co z "#" fragmentu?
Dosłowny znak "#" wewnątrz wartości trzeba zakodować jako %23; w przeciwnym razie wszystko, co jest za nim, zostanie odczytane jako fragment i nigdy nie dotrze do serwera.
Warto wiedzieć
- Wszystko dzieje się w przeglądarce. To, co wklejasz, nie jest wysyłane, rejestrowane ani przechowywane.
Źródła
Wszystkie narzędzia z kategorii Kod