Czym jest to narzędzie?
Kodowanie URL (kodowanie procentowe) zastępuje znaki niedozwolone w adresach URL znakiem % i ich wartością bajtową w systemie szesnastkowym — spacja staje się %20, a 你 staje się %E4%BD%A0. Bez tego znaki takie jak spacje, &, ? i tekst spoza ASCII zepsułyby strukturę URL lub zostałyby błędnie zinterpretowane przez serwery.
Istnieją dwie typowe potrzeby, a to narzędzie obsługuje obie: kodowanie wartości wewnątrz parametru zapytania (tryb komponentu — koduje też / ? & =) oraz kodowanie całego adresu URL z zachowaniem jego struktury (tryb pełnego URL — pozostawia :// ? & bez zmian).
Dlaczego warto go używać?
- Bezpiecznie buduj ciągi zapytań — dane od użytkownika ze znakami &, = lub spacjami nie zepsują adresu URL.
- Dekoduj długie zakodowane adresy URL z logów, analityki lub przekierowań, aby zobaczyć, co naprawdę zawierają.
- Poprawna obsługa UTF-8 dla chińskiego, emoji i innego tekstu spoza ASCII.
- Dwa tryby, dzięki czemu przypadkowo nie zakodujesz znaków : i / całego adresu URL.
- Darmowe, natychmiastowe, bez przesyłania plików.
Jak używać
- Wklej tekst lub adres URL w polu wejściowym.
- Wybierz tryb: „Komponent” dla wartości trafiających do parametrów zapytania, „Pełny URL” dla całych adresów URL.
- Kliknij „Koduj” lub „Dekoduj”.
- Skopiuj wynik.
Przykład
Wejście
https://example.com/search?q=hello world & 你好Wynik
Component mode: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Full URL mode: https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BDTryb komponentu koduje też znaki strukturalne; tryb pełnego URL je zachowuje.
Typowe zastosowania
- Tworzenie adresu URL do udostępnienia, w którym fraza wyszukiwania lub wartość filtra pochodzi od użytkownika i może zawierać spacje, & lub inne znaki specjalne.
- Dekodowanie długiego adresu URL śledzącego lub przekierowującego z e-maila lub kampanii reklamowej, aby zobaczyć rzeczywisty cel i parametry przed kliknięciem.
- Debugowanie, dlaczego parametr zapytania nie jest poprawnie odczytywany przez serwer — często winowajcą jest zarezerwowany znak, który powinien zostać zakodowany, a nie został.
- Przygotowanie wartości spoza angielskiego (chińskiej, japońskiej, arabskiej itd.) do użycia w ciągu zapytania URL.
encodeURIComponent vs encodeURI w praktyce
Odpowiadają one bezpośrednio dwóm trybom tego narzędzia i odpowiadają rzeczywistym funkcjom JavaScript, które programiści już znają: encodeURIComponent (tryb komponentu) koduje wszystko poza niewielkim zbiorem znaków niezastrzeżonych, dzięki czemu jest bezpieczny dla dowolnej pojedynczej wartości wstawianej do adresu URL — używa się go dla parametru zapytania, segmentu ścieżki lub wartości fragmentu hash. encodeURI (tryb pełnego URL) pozostawia znaki strukturalne adresu URL (:, /, ?, #, &, =) bez zmian, ponieważ zakłada, że kodujesz cały, już ustrukturyzowany adres URL, a nie surową wartość — użycie go dla pojedynczej wartości parametru nie zakodowałoby znaków & lub =, które może ona zawierać, co jest najczęstszym błędem przy wyborze niewłaściwego trybu.
Znaki zarezerwowane a niezastrzeżone
Specyfikacja URL (RFC 3986) dzieli znaki na dwie grupy: znaki niezastrzeżone (litery, cyfry, - _ . ~) są zawsze bezpieczne i nigdy nie są kodowane, natomiast znaki zarezerwowane (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) mają specjalne znaczenie w strukturze URL i wymagają kodowania tylko wtedy, gdy występują jako dosłowne dane, a nie strukturalna interpunkcja. Właśnie dlatego istnieją te dwa tryby — tryb komponentu traktuje znaki zarezerwowane jako dane do ochrony, tryb pełnego URL traktuje je jako strukturę do zachowania. Zrozumienie tej różnicy jest bardziej użyteczne niż zapamiętywanie, kiedy którego trybu użyć, ponieważ wyjaśnia, dlaczego ten sam znak (np. &) jest czasem kodowany, a czasem pozostawiany bez zmian, w zależności od roli, jaką pełni w konkretnym adresie URL.
Najczęściej zadawane pytania
Kiedy używać trybu komponentu, a kiedy pełnego URL?
Tryb komponentu (encodeURIComponent) przy kodowaniu pojedynczej wartości trafiającej do parametru zapytania — koduje /, ?, & i =, aby nie mogły zepsuć adresu URL. Tryb pełnego URL (encodeURI) przy kodowaniu całego adresu URL — zachowuje znaki strukturalne, dzięki czemu URL nadal działa.
Dlaczego zamiast + dla spacji pojawia się %20?
Oba są poprawne w różnych kontekstach. %20 to uniwersalne kodowanie procentowe spacji; + oznacza spację tylko wewnątrz ciągów zapytań w starszym formacie application/x-www-form-urlencoded. To narzędzie używa %20, które działa wszędzie.
Dlaczego dekodowanie kończy się błędem?
Wejście zawiera nieprawidłową sekwencję procentową, np. % nieuzupełniony dwiema cyframi szesnastkowymi. Często zdarza się to, gdy adres URL został ucięty lub zdekodowany dwukrotnie. Popraw lub usuń uszkodzoną sekwencję %.
Czym jest podwójne kodowanie?
Kodowaniem już zakodowanego tekstu: %20 staje się %2520, ponieważ sam % jest kodowany jako %25. To częsty błąd — jeśli zdekodowany wynik nadal zawiera kody %, zdekoduj go jeszcze raz.
Czy narzędzie obsługuje chińskie znaki i emoji?
Tak. Tekst jest kodowany jako bajty UTF-8, więc 你好 staje się %E4%BD%A0%E5%A5%BD i dekoduje się bezbłędnie z powrotem — dokładnie tak, jak robią to przeglądarki.