Jak używać
- Wybierz opcję Koduj lub Dekoduj.
- Wybierz tryb Komponent dla pojedynczej wartości (np. jednego parametru zapytania) albo Pełny URL dla całego adresu.
- Wpisz lub wklej tekst. Wynik pojawi się od razu po prawej stronie (lub poniżej na telefonie).
- Skopiuj wynik albo użyj opcji „Użyj wyniku jako danych wejściowych”, aby odwrócić operację i sprawdzić, czy można odzyskać tekst.
Jak to działa
W adresach URL można używać tylko ograniczonego zestawu znaków ASCII. Pozostałe znaki, w tym spacje, litery diakrytyczne i emoji, zapisuje się jako sekwencje procentowe: znak jest konwertowany na bajty UTF-8, a każdy bajt przyjmuje postać % i dwóch cyfr szesnastkowych. Spacja zamienia się w %20, é w %C3%A9, a € w %E2%82%AC.
Tryb Komponent używa funkcji JavaScript encodeURIComponent i decodeURIComponent. Koduje wszystkie znaki mające specjalne znaczenie w adresie URL, w tym / ? # & = + : i @, dzięki czemu wynik można bezpiecznie umieścić w wartości parametru zapytania lub pojedynczym segmencie ścieżki. Bez zmian pozostawia tylko A–Z, a–z, 0–9 oraz - _ . ! ~ * ' ( ).
Tryb Pełny URL używa funkcji encodeURI i decodeURI. Zakłada, że podany tekst jest kompletnym adresem URL, i pozostawia bez zmian zarezerwowane znaki ; , / ? : @ & = + $ #, aby adres nadal działał. Podczas dekodowania decodeURI również pozostawia sekwencje tych zarezerwowanych znaków bez zmian: %2F pozostaje %2F, ponieważ zamiana na / zmieniłaby znaczenie adresu URL.
Opcja Dane formularza korzysta z formatu application/x-www-form-urlencoded, którego przeglądarki używają podczas wysyłania formularzy HTML: spacja jest zapisywana jako + zamiast %20. Podczas dekodowania z tą opcją każdy znak + zamienia się w spację; rzeczywisty znak plusa należy wtedy zapisać jako %2B.
Nieprawidłowe dane wejściowe nigdy nie są pomijane. Jeśli po znaku % nie występują dwie cyfry szesnastkowe albo sekwencja kodów nie tworzy prawidłowego tekstu UTF-8, narzędzie wskazuje miejsce problemu i zachowuje tekst, aby można go było poprawić.
Przykłady
Dodawanie wartości do ciągu zapytania
Aby wyszukać „Rock & Roll” pod adresem https://example.com/search?q=…, zakoduj tylko wartość w trybie Komponent: Rock%20%26%20Roll. Bez kodowania znak & zakończyłby parametr q i rozpoczął nowy parametr o nazwie „ Roll”.
Poprawianie adresu URL ze spacjami i znakami diakrytycznymi
W trybie Pełny URL adres https://example.com/menu/crème brûlée.html zmienia się w https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html. Ukośniki i dwukropek pozostają bez zmian, więc link nadal działa.
Odczytywanie danych formularza z logów
W logu serwera widnieje name=Jane+Doe&city=S%C3%A3o+Paulo. Odkoduj tekst w trybie Komponent, włączając opcję „Traktuj + jako spację”, aby odczytać name=Jane Doe&city=São Paulo.
Często zadawane pytania
Czym różnią się encodeURI i encodeURIComponent?
encodeURIComponent koduje znaki rozdzielające części adresu URL (/ ? # & = + : @ i inne), dlatego służy do kodowania pojedynczego fragmentu adresu. encodeURI pozostawia te znaki bez zmian, dlatego służy do kodowania całego adresu URL. Użycie encodeURI dla wartości parametru zapytania to częsty błąd: znak & lub = w tej wartości nie zostałby zakodowany i uszkodziłby ciąg zapytania.
Czy spację zapisywać jako %20 czy +?
W ścieżce adresu URL spację zawsze zapisuje się jako %20. W ciągu zapytania występują oba zapisy: %20 jest poprawne wszędzie, a + oznacza spację tylko w danych zakodowanych w formacie formularza (application/x-www-form-urlencoded), używanym przez formularze HTML i wiele frameworków serwerowych do odczytywania ciągów zapytania. W razie wątpliwości użyj %20.
Dlaczego podczas dekodowania pojawia się błąd?
Dekodowanie kończy się błędem, gdy po znaku % nie występują dwie cyfry szesnastkowe (na przykład „50% off”) albo zakodowane bajty nie tworzą prawidłowego tekstu UTF-8. Zwykle oznacza to, że tekst zakodowano w starszym kodowaniu znaków, takim jak Latin-1 (é jako %E9 zamiast %C3%A9). Komunikat o błędzie wskazuje pozycję problemu.
Dlaczego w trybie Pełny URL %2F nie zamieniło się w ukośnik?
decodeURI celowo pozostawia sekwencje zarezerwowanych znaków, takich jak / ? # & i =, bez zmian, ponieważ ich dekodowanie mogłoby zmienić podział adresu URL na części. Aby zdekodować wszystkie sekwencje, użyj trybu Komponent.
Które znaki nigdy nie są kodowane?
Oba tryby pozostawiają bez zmian A–Z, a–z, 0–9 oraz - _ . ! ~ * ' ( ). Tryb Pełny URL dodatkowo pozostawia bez zmian ; , / ? : @ & = + $ i #.
Prywatność
Kodowanie i dekodowanie odbywa się w całości w przeglądarce za pomocą wbudowanych funkcji JavaScript. Tekst i adresy URL nie są przesyłane, przechowywane ani uwzględniane w statystykach.