Jak korzystać z narzędzia
- 1Wybierz „Koduj” lub „Dekoduj”, a potem wpisz lub wklej tekst – wynik aktualizuje się na bieżąco.
- 2Przy kodowaniu wybierz odpowiedni rodzaj: „Komponent” dla pojedynczej wartości, np. wyszukiwanej frazy, „Pełny URL” dla całego adresu albo „Dane formularza”, aby zapisać spacje jako
+. - 3Przy dekodowaniu parametrów zapytania lub danych formularza włącz „Traktuj + jako spację”. Jeśli tekst zawiera uszkodzoną sekwencję, narzędzie dokładnie wskaże, gdzie się znajduje.
- 4Aby przeanalizować link, wklej go w sekcji „Rozłóż URL na części” – zobaczysz host, port, ścieżkę, fragment i wszystkie parametry zapytania w postaci zdekodowanej.
Czym jest kodowanie URL?
Adres URL może zawierać tylko ograniczony zestaw znaków ASCII. Wszystko inne – spacje, litery ze znakami diakrytycznymi, emoji i znaki o specjalnym znaczeniu, takie jak &, =, ? czy # – trzeba zakodować procentowo: każdy bajt znaku w postaci UTF-8 zapisuje się jako %, a po nim dwie cyfry szesnastkowe. Spacja staje się %20, é – %C3%A9, a € – %E2%82%AC.
Kodowanie sprawia, że dane nie zostaną pomylone ze strukturą adresu URL. Jeśli wyszukiwana fraza zawiera & i zostawisz ten znak bez zmian, serwer podzieli frazę na dwa parametry; zapisany jako %26 pozostaje częścią wartości.
Komponent, pełny URL czy dane formularza?
Kodowanie komponentu – encodeURIComponent w JavaScripcie – koduje wszystko oprócz liter, cyfr i - _ . ! ~ * ' ( ). Używaj go dla każdego elementu, który wstawiasz do adresu URL: wartości parametru, segmentu ścieżki, adresu docelowego przekierowania.
Kodowanie pełnego URL – encodeURI – pozostawia bez zmian znaki tworzące strukturę adresu URL, takie jak : / ? # & =, i koduje tylko spacje, znaki spoza ASCII i niebezpieczne symbole. Używaj go dla całego, poprawnie złożonego adresu URL, nigdy dla pojedynczych wartości.
Kodowanie formularzy (application/x-www-form-urlencoded) to format, który przeglądarki wysyłają po zatwierdzeniu formularza HTML i który tworzy URLSearchParams. Działa jak kodowanie komponentu, z tą różnicą, że spacje stają się znakami +. Dlatego + oznacza spację w większości parametrów zapytań – i dlatego prawdziwy znak plus trzeba zapisać jako %2B.
Dlaczego dekodowanie może się nie udać
Po znaku % zawsze muszą następować dwie cyfry szesnastkowe. Tekst taki jak 100% sure nie jest prawidłowym kodowaniem procentowym: sam znak procentu powinien być zapisany jako %25.
Bajty kryjące się za sekwencjami muszą też tworzyć prawidłowy UTF-8. caf%E9 to sposób, w jaki starsze systemy kodowały „café” w Windows-1252 lub ISO-8859-1 – w UTF-8 é to %C3%A9. Dekoder wskazuje dokładnie tę sekwencję, która powoduje błąd, więc możesz ustalić, czy tekst został ucięty, czy zakodowany w innym zestawie znaków.
Pytania i odpowiedzi
Co oznacza %20 w adresie URL?
%20 to zakodowana spacja. Spacje nie są dozwolone w adresach URL, więc zapisuje się je jako %20 – albo jako + w parametrach zapytań i danych formularzy. Oba zapisy dekodują się do zwykłej spacji.
Czy spacje kodować jako %20, czy jako +?
W ścieżce zawsze używaj %20. W parametrach zapytania w praktyce działa jedno i drugie, bo serwery dekodują dane formularzy, traktując + jako spację. %20 jest bezpieczne wszędzie, a + oznacza spację tylko w parametrach zapytań i treści formularzy.
Czym różni się encodeURI od encodeURIComponent?
encodeURIComponent koduje także znaki zarezerwowane, takie jak / ? & = #, więc nadaje się do pojedynczych wartości. encodeURI pozostawia je bez zmian, aby pełny adres URL nadal działał. Użycie encodeURI dla wartości parametru to częsty błąd: znak & w wartości dzieli ją wtedy na dwa parametry.
Skąd się bierze błąd „URI malformed”?
decodeURIComponent w JavaScripcie zgłasza go, gdy po % nie ma dwóch cyfr szesnastkowych albo gdy zakodowane bajty nie są prawidłowym UTF-8. Wklej tekst do dekodera powyżej, a pokaże, która sekwencja powoduje błąd i na jakiej pozycji.
Których znaków nie trzeba kodować w adresie URL?
Litery A–Z i a–z, cyfry 0–9 oraz - . _ ~ nigdy nie wymagają kodowania. Znaki zarezerwowane, takie jak : / ? # [ ] @ ! $ & ' ( ) * + , ; =, są dozwolone tam, gdzie mają swoje specjalne znaczenie, ale muszą być zakodowane, gdy są częścią danych.