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