Koder / Dekoder URL
Koduj lub dekoduj URL-e i ciągi zapytań.
Czym jest kodowanie URL?
Kodowanie URL (zwane też kodowaniem procentowym) to mechanizm konwertowania znaków niedozwolonych w URL na bezpieczny format szesnastkowy. Każdy niebezpieczny znak jest zastępowany znakiem procenta, po którym następują dwie cyfry szesnastkowe reprezentujące jego kod ASCII. Na przykład spacja staje się %20, ampersand %26, a hash %23.
URL może zawierać tylko ograniczony zestaw znaków zdefiniowany przez RFC 3986: litery (A–Z, a–z), cyfry (0–9) i kilka znaków specjalnych (- _ . ~ ! * ' ( )). Każdy inny znak — w tym spacje, litery spoza ASCII i zarezerwowane znaki, takie jak & = ? # — musi być zakodowany procentowo przed dołączeniem do URL.
Kiedy musisz kodować URL?
- Przekazywanie znaków specjalnych w parametrach ciągu zapytania (np. ?q=hello%20world).
- Kodowanie danych formularza wysłanych przez HTTP POST z typem zawartości application/x-www-form-urlencoded.
- Programowe konstruowanie URL żądań API z danymi wejściowymi od użytkownika.
- Osadzanie URL wewnątrz innych URL (np. parametry przekierowania).
- Dołączanie znaków Unicode (litery akcentowane, emoji, znaki CJK) do URL.
Kodowanie a dekodowanie
Kodowanie konwertuje zwykły tekst na ciąg bezpieczny dla URL przez zastępowanie niebezpiecznych znaków ich odpowiednikami zakodowanymi procentowo. Dekodowanie odwraca ten proces, konwertując sekwencje zakodowane procentowo z powrotem do oryginalnych znaków. To narzędzie pozwala przełączać się między kierunkami kodowania i dekodowania jednym kliknięciem.
Jak korzystać z tego narzędzia
Wklej lub wpisz tekst w polu wejściowym. Wybierz tryb kodowania lub dekodowania. Wyjście aktualizuje się natychmiast. Kliknij przycisk zamiany, aby odwrócić kierunek, używając bieżącego wyjścia jako nowego wejścia. Jest to przydatne, gdy musisz zakodować ciąg, a następnie zweryfikować wynik przez jego odkodowanie.
Znaki, które są kodowane
To narzędzie używa funkcji encodeURIComponent() JavaScript, która koduje wszystkie znaki z wyjątkiem: A–Z, a–z, 0–9 oraz niezarezerwowanych znaków - _ . ! ~ * ' ( ). Jest to prawidłowe kodowanie dla wartości parametrów zapytania i danych formularzy. Podobna funkcja encodeURI() jest mniej agresywna i zachowuje znaki takie jak : / ? #, które mają znaczenie w strukturze URL.
Typowe błędy kodowania URL
Najczęstszym błędem jest podwójne kodowanie — kodowanie ciągu, który jest już zakodowany, zamieniając %20 w %2520. Psuje to URL i dezorientuje serwery. Zawsze sprawdzaj, czy dane wejściowe są już zakodowane, przed zastosowaniem kodowania. Innym błędem jest użycie encodeURI() gdy potrzebne jest encodeURIComponent(), co pozostawia & i = niekodowane w wartościach parametrów.
Brak kodowania danych wejściowych od użytkownika przed wstawianiem ich do URL to luka bezpieczeństwa. Niekodowane dane wejściowe od użytkownika mogą wstrzykiwać dodatkowe parametry zapytania, łamać parsowanie URL lub umożliwiać ataki iniekcji. Zawsze koduj wartości podane przez użytkownika podczas programowego konstruowania URL.
Praktyczne wskazówki
W tworzeniu stron internetowych większość frameworków automatycznie obsługuje kodowanie URL w przesyłaniu formularzy i bibliotekach klienta HTTP. Ręczne kodowanie jest zazwyczaj potrzebne podczas dynamicznego budowania URL w JavaScript, przy przekazywaniu danych w fragmentach URL lub podczas debugowania wywołań API zawierających znaki specjalne.
Często zadawane pytania
Jaka jest różnica między %20 a + dla spacji?
Oba reprezentują spacje, ale w różnych kontekstach. %20 to standardowe kodowanie URL dla spacji i działa wszędzie. Znak + reprezentuje spacje tylko w ciągach zapytań używając formatu application/x-www-form-urlencoded (przesyłanie formularzy HTML). W razie wątpliwości używaj %20.
Czy muszę kodować znaki UTF-8?
Tak. Znaki spoza ASCII (litery akcentowane, emoji, chińskie znaki itp.) muszą być zakodowane w UTF-8, a następnie zakodowane procentowo do dołączenia do URL. Funkcja encodeURIComponent() JavaScript obsługuje oba kroki automatycznie, konwertując znaki takie jak é do %C3%A9.