Jak kodować i dekodować adresy URL
Jeśli kiedykolwiek widziałeś %20 w URL tam, gdzie powinna być spacja, lub %C3%A9 tam, gdzie powinien być znak z akcentem, napotkałeś kodowanie URL. To fundamentalny element sieci, a jego zrozumienie pomaga debugować zepsute linki, problemy z API i przesyłanie formularzy.
Co robi kodowanie URL
Adresy URL mogą zawierać tylko ograniczony zestaw bezpiecznych znaków: litery (A-Z, a-z), cyfry (0-9) i kilka znaków specjalnych (-, _, ., ~). Wszystko inne — spacje, akcenty, emoji, symbole jak &, =, #, ? — musi być przekonwertowane na bezpieczny format.
Kodowanie URL (zwane również percent-encoding) zastępuje niebezpieczne znaki znakiem %, po którym następuje ich szesnastkowa wartość bajtowa:
| Znak | Zakodowany |
|---|---|
| Spacja | %20 |
| & | %26 |
| = | %3D |
| # | %23 |
| ? | %3F |
| / | %2F |
| @ | %40 |
Kiedy kodowanie URL jest konieczne
- Parametry zapytań ze znakami specjalnymi — zapytanie jak
cena > 100 & kategoria = butywymaga kodowania, aby działało w URL - Znaki niełacińskie w URL — imiona, miasta lub treści w innych językach muszą być zakodowane
- Żądania API — przy ręcznym konstruowaniu wywołań API wartości parametrów często wymagają kodowania
- Debugowanie — gdy URL nie działa, jego zdekodowanie ujawnia prawdziwe wartości
Jak kodować i dekodować
- Wybierz kodowanie lub dekodowanie — wybierz kierunek. Weź encodeURIComponent dla parametrów zapytania lub encodeURI dla pełnych URL.
- Wklej swoje wejście — wprowadź tekst lub URL. Wynik aktualizuje się natychmiast.
- Skopiuj wyjście — użyj wyniku w swoim kodzie, żądaniu API lub przeglądarce.
Wskazówki
- Koduj wartości, a nie całe URL — jeśli zakodujesz cały URL, ukośniki i dwukropki strukturyzujące URL zostaną również zakodowane, co go zepsuje. Koduj tylko wartości w parametrach zapytania.
- Podwójne kodowanie — kodowanie już zakodowanego ciągu produkuje rzeczy jak
%2520(znak%staje się%25). Jeśli Twój URL wygląda nieprawidłowo, sprawdź, czy coś nie zostało zakodowane dwa razy. - Dekoduj do debugowania — gdy żądanie API zawodzi lub URL wydaje się nieczytelny, zdekoduj go, aby zobaczyć prawdziwe wartości. Często ujawnia to problem natychmiast.
- Używaj wbudowanych funkcji swojego języka — w kodzie produkcyjnym zawsze używaj
encodeURIComponent()(JavaScript),urllib.parse.quote()(Python) lubURLEncoder.encode()(Java), zamiast kodować ręcznie.
Najczęściej zadawane pytania
Jaka jest różnica między encodeURI a encodeURIComponent?
encodeURI zachowuje znaki ważne w strukturze URL (ukośniki, dwukropki, znaki zapytania). encodeURIComponent koduje wszystko oprócz liter, cyfr i kilku bezpiecznych znaków. Używaj encodeURIComponent dla wartości parametrów zapytań, encodeURI dla pełnych URL.
Dlaczego spacje stają się %20 lub +?
W kodowaniu URL spacje stają się %20. W danych formularza (application/x-www-form-urlencoded) spacje stają się +. Oba są ważne w swoich kontekstach, ale %20 jest uniwersalnym standardem dla URL.
Czy muszę kodować swoje URL ręcznie?
W większości przypadków Twój język lub framework zajmuje się kodowaniem automatycznie. Ręczne kodowanie jest przydatne, gdy konstruujesz URL ręcznie, debugujesz żądania API lub pracujesz z ciągami zapytań zawierającymi znaki specjalne.
Czy moje dane są wysyłane na serwer?
Nie. Całe kodowanie i dekodowanie odbywa się w Twojej przeglądarce.