Przejdź do treści
Quaestio

Koder URL

Zakoduj tekst, który ma trafić do adresu internetowego, albo zamień zakodowany adres z powrotem na czytelny tekst.

0 zn. · 0 B

Wynik

Wpisz coś w polu powyżej.

W trybie pojedynczego składnika kodowane są też ukośniki i znaki zapytania. Bez zaznaczenia struktura adresu zostaje zachowana, a kodowane są tylko niedozwolone znaki.

Osadź

Osadź to narzędzie na swojej stronie

Skopiuj kod i wklej go tam, gdzie ma się pojawić narzędzie, np. we wpisie na blogu albo na stronie szkoły. To nic nie kosztuje, ramka nie zawiera reklam, a narzędzie liczy w przeglądarce odwiedzającego.

Jak to działa

Adresy internetowe mogą zawierać tylko ograniczony zestaw znaków. Wszystkie pozostałe zapisuje się jako znak procentu i wartość znaku w systemie szesnastkowym, dlatego spacja staje się %20.

Dwa tryby różnią się tym, co uznają za strukturę adresu. Kodowanie pojedynczego składnika koduje też ukośniki, znaki zapytania i znaki równości, bo inaczej zostałyby odczytane jako części adresu.

Kodowanie całego adresu pozostawia te znaki bez zmian, więc struktura się zachowuje. Użyj tego trybu dla gotowego adresu, w którym tylko kilka znaków wymaga zakodowania.

Jeśli wybierzesz zły tryb dla parametru, odbiorca może odczytać jedną wartość jako kilka. Wartość po znaku równości prawie zawsze należy kodować jako pojedynczy składnik.

Uwaga na plus: w części zapytania adresu historycznie oznacza spację, a w ścieżce zwykły plus.

Funkcje stojące za trybami

Tryb pojedynczego składnika używa funkcji JavaScriptu encodeURIComponent i decodeURIComponent, a tryb całego adresu funkcji encodeURI i decodeURI; wszystkie cztery definiuje standard ECMAScript. Każdy znak do zakodowania jest najpierw zamieniany na UTF-8, a każdy bajt zapisywany jako znak procentu i dwie cyfry szesnastkowe. Jako składnik tekst pierogi & bigos 25 zł staje się więc pierogi%20%26%20bigos%2025%20z%C5%82. Jako cały adres znak & zostaje: pierogi%20&%20bigos%2025%20z%C5%82. Znak, którego nie da się zapisać w UTF-8, np. samotna połówka pary surogatów po nieudanym kopiowaniu, daje komunikat o błędzie zamiast wyniku.

Znaki, których się nie koduje

ECMAScript pozostawia bez kodowania w obu trybach litery A–Z i a–z, cyfry, podkreślenie, łącznik, kropkę, wykrzyknik, tyldę, gwiazdkę, apostrof i nawiasy okrągłe. RFC 3986 uznaje za niezarezerwowane tylko łącznik, kropkę, podkreślenie i tyldę; wykrzyknik, apostrof, nawiasy i gwiazdka należą do zarezerwowanych separatorów i w niektórych adresach mogą coś znaczyć.

Tryb całego adresu pozostawia ponadto średnik, ukośnik, znak zapytania, dwukropek, małpę, znak &, znak równości, plus, dolar, przecinek i krzyżyk. Nawiasy kwadratowe są natomiast kodowane, więc adres IPv6 w adresie URL, np. http://[::1]:8080/, staje się http://%5B::1%5D:8080/.

Plus i formularze

Formularze są kodowane w formacie application/x-www-form-urlencoded, w którym standard URL organizacji WHATWG zapisuje spację jako plus i dodatkowo koduje wykrzyknik, apostrof, nawiasy i tyldę. Narzędzie zawsze zapisuje %20, a dekodowanie nie zamienia plusa na spację: a+b zostaje a+b. Jeśli tekst pochodzi z formularza, najpierw zamień plusy na spacje.

Błędy dekodowania

Dekodowanie wymaga poprawnego UTF-8. %B3, czyli ł w starszych kodowaniach ISO 8859-2 i Windows-1250, daje komunikat o błędzie, a %C5%82 daje ł. Znak procentu, po którym nie ma dwóch cyfr szesnastkowych, jak w 100%, też jest błędem. W trybie całego adresu zakodowane separatory zostają bez zmian: a%2Fb pozostaje a%2Fb, bo odkodowany ukośnik zmieniłby strukturę adresu.

Źródła

Jak sprawdzamy narzędzia