Wybierz język

Kodowanie Procentowe Adresów URL

Szybko zakoduj tekst do bezpiecznego formatu URL. Wybierz tryb dla całego adresu lub jego komponentu i zdecyduj, czy zamieniać spacje na %20 czy +.

Mehmet Demiray Opublikowano Zaktualizowano
Udostępnij
Komponent koduje znaki zastrzeżone; pełny zachowuje strukturę URL

Dlaczego adresy URL wymagają kodowania?

Adresy URL, czyli linki, które codziennie wpisujemy w przeglądarkę, mają ściśle określoną strukturę i zestaw dozwolonych znaków. Standard RFC 3986, który definiuje budowę jednolitego identyfikatora zasobów (URI), dzieli znaki na dwie grupy: zastrzeżone i niezastrzeżone. Znaki niezastrzeżone to litery alfabetu łacińskiego (A-Z, a-z), cyfry (0-9) oraz kilka symboli: -, _, ., ~. Mogą one występować w adresie URL bez żadnych modyfikacji. Jednak druga grupa, znaki zastrzeżone, pełni specjalne funkcje. Znaki takie jak / oddzielają segmenty ścieżki, ? rozpoczyna parametry zapytania, & oddziela kolejne parametry, a # wskazuje na fragment dokumentu. Gdy któryś z tych znaków musi pojawić się w adresie w innym kontekście – na przykład jako część nazwy pliku lub wartości parametru – musi zostać zakodowany. W przeciwnym razie przeglądarka lub serwer mogłyby błędnie zinterpretować strukturę adresu, co prowadziłoby do błędów 404 lub nieprawidłowego działania aplikacji. Kodowanie URL, znane też jako kodowanie procentowe, polega na zastąpieniu problematycznego znaku symbolem % i dwiema cyframi szesnastkowymi odpowiadającymi jego wartości w tabeli ASCII lub UTF-8. Na przykład spacja, która jest niedozwolona w URL, jest kodowana jako %20.

Kodowanie komponentu a kodowanie całego adresu URL

Nasze narzędzie do kodowania URL oferuje dwa tryby: kodowanie komponentu (component) i kodowanie całego URI (full URI). Wybór odpowiedniego trybu jest kluczowy dla poprawnego działania linku. Tryb kodowania komponentu jest odpowiednikiem funkcji encodeURIComponent() z JavaScriptu. Jest przeznaczony do kodowania pojedynczych fragmentów adresu, najczęściej wartości parametrów w zapytaniu (query string). W tym trybie kodowane są wszystkie znaki zastrzeżone, takie jak /, ?, &, =, :, @. Jest to niezbędne, gdy wartość parametru sama w sobie zawiera taki znak. Przykład: jeśli chcesz przekazać inny adres URL jako parametr, np. ?redirect=https://example.com/strona, musisz zakodować wartość https://example.com/strona, aby znaki // i : nie zniszczyły struktury głównego adresu. Tryb kodowania całego URI działa jak funkcja encodeURI(). Jest łagodniejszy i zakłada, że podany tekst to już prawie gotowy, kompletny adres URL. W tym trybie znaki zastrzeżone, które mają specjalne znaczenie dla struktury całego adresu (/, ?, &, =, :, #), nie są kodowane. Koduje on jedynie znaki, które są absolutnie niedozwolone, jak spacje czy polskie znaki diakrytyczne. Używaj tego trybu, gdy masz cały link z niezgodnymi znakami i chcesz go naprawić, zachowując jego podstawową strukturę. Do bezpiecznego przetwarzania danych wejściowych, np. od użytkowników, niemal zawsze należy używać trybu komponentu. Po zakodowaniu wartości można ją bezpiecznie wstawić do linku, a następnie skorzystać z narzędzia do dekodowania URL, aby odczytać oryginalną treść.

Spacje w adresach URL: %20 czy +?

Spacja jest jednym z najczęściej kodowanych znaków w adresach URL, ponieważ jest niedozwolona w ich składni. Istnieją dwa popularne sposoby jej reprezentacji: jako %20 lub jako znak plus +. Chociaż wiele systemów interpretuje oba zapisy tak samo, ich pochodzenie i zastosowanie są różne. Standardem kodowania procentowego dla spacji jest %20. Wynika to wprost ze specyfikacji RFC 3986, gdzie spacja ma kod ASCII 32, co w systemie szesnastkowym daje 20. Ta forma jest uniwersalna i poprawna w każdej części adresu URL – zarówno w ścieżce (/pliki/mój raport.pdf), jak i w zapytaniu (?q=wakacje w górach). Znak plus + jako zamiennik spacji ma swoje korzenie w starszym standardzie kodowania danych z formularzy HTML (application/x-www-form-urlencoded). Gdy przeglądarka wysyłała dane z formularza metodą GET, zamieniała spacje w polach tekstowych na plusy, co było bardziej zwięzłe niż %20. Ta konwencja przyjęła się i jest szeroko stosowana, ale formalnie jest poprawna tylko w części zapytania (query string), czyli po znaku ?. Użycie + w ścieżce pliku jest technicznie niepoprawne i może prowadzić do błędów. Nasze narzędzie "Kodowanie URL" pozwala wybrać, czy spacje mają być kodowane jako +. Opcja ta jest przydatna dla deweloperów, którzy muszą integrować się ze starszymi systemami lub specyficznymi API oczekującymi właśnie takiego formatu danych formularzowych.

Polskie znaki i emoji w adresach URL (Unicode)

Pierwotne specyfikacje internetowe zakładały, że adresy URL będą składać się wyłącznie ze znaków z zestawu ASCII. To stanowiło problem dla języków, które używają znaków diakrytycznych, takich jak polskie ą, ę, ł, ż. Rozwiązaniem stało się kodowanie znaków w standardzie UTF-8, a następnie przedstawianie ich za pomocą kodowania procentowego. Proces ten wygląda następująco: każdy znak spoza ASCII, na przykład polska litera ż, jest najpierw reprezentowany jako sekwencja jednego lub więcej bajtów zgodnie z kodowaniem UTF-8. W przypadku ż są to dwa bajty o wartościach szesnastkowych C5 i BC. Następnie każdy z tych bajtów jest kodowany procentowo, czyli poprzedzany znakiem %. W rezultacie litera ż w adresie URL przybiera postać %C5%BC. W ten sposób całe polskie frazy mogą być bezpiecznie umieszczane w linkach, na przykład w parametrach wyszukiwania: https://wyszukiwarka.pl/szukaj?q=gżegżółka. Ta sama zasada dotyczy wszystkich innych znaków Unicode, w tym popularnych emoji. Na przykład emoji kciuka w górę (👍) w kodowaniu UTF-8 składa się z czterech bajtów: F0, 9F, 91, 8D. Po zakodowaniu procentowym w adresie URL będzie wyglądać jako %F0%9F%91%8D. Dzięki temu mechanizmowi możliwe jest tworzenie międzynarodowych, w pełni funkcjonalnych adresów URL, które mogą być następnie wykorzystane na przykład do wygenerowania kodu QR z linkiem prowadzącego do zasobu z polską nazwą.

Częste problemy i pytania dotyczące kodowania URL

Podczas pracy z adresami URL często pojawiają się te same pytania i problemy. Oto odpowiedzi na najczęstsze z nich. Czym dokładnie jest kodowanie procentowe? To mechanizm transformacji danych w adresie URL do postaci, która używa tylko ograniczonego, bezpiecznego zestawu znaków ASCII. Każdy znak, który nie należy do tej bezpiecznej grupy, jest zastępowany przez znak procentu % i dwie cyfry szesnastkowe, które reprezentują wartość bajtu danego znaku. Którego trybu użyć do parametru w zapytaniu (query parameter)? Do kodowania wartości pojedynczego parametru zawsze należy używać trybu "komponentu". Daje to pewność, że wszystkie znaki specjalne wewnątrz wartości (np. &, =, ?) zostaną zakodowane i nie zaburzą struktury całego adresu. Na przykład, jeśli przekazujesz URL jako parametr ?url=http://a.com?b=1, bez kodowania komponentu pierwsze ? i = zostałyby zinterpretowane jako część głównego adresu. Dlaczego mój znak & lub ? psuje link? Ponieważ są to znaki zastrzeżone o specjalnym znaczeniu. Znak ? rozpoczyna część zapytania (query string), a & oddziela poszczególne pary klucz-wartość w tym zapytaniu. Jeśli chcesz, aby te znaki były częścią nazwy lub wartości parametru, musisz je zakodować. & staje się %26, a ? staje się %3F. Nasze narzędzie "Kodowanie URL" automatycznie radzi sobie z tymi przypadkami w trybie komponentu, zapewniając integralność Twoich linków.

Najczęściej zadawane pytania.

Dlaczego niektóre znaki w adresie URL zamieniają się na „%” i dziwne kody?

Adresy URL mogą bezpiecznie zawierać tylko ograniczony zestaw znaków (głównie litery angielskie, cyfry i kilka symboli). Wszystkie inne znaki, takie jak spacje, polskie litery diakrytyczne (np. ą, ę, ż) czy emoji, muszą zostać zakodowane, aby przeglądarki i serwery internetowe mogły je poprawnie zinterpretować. Proces ten nazywa się kodowaniem procentowym, gdzie każdy specjalny znak jest zastępowany znakiem „%” i dwucyfrowym kodem szesnastkowym.

Chcę dodać parametr do linku, np. „?kategoria=Sprzęt RTV”. Którego trybu kodowania użyć?

Do kodowania wartości pojedynczego parametru (w tym przypadku „Sprzęt RTV”) zawsze używaj trybu „Koduj komponent”. Ten tryb zamienia wszystkie znaki specjalne, w tym te zastrzeżone jak „&” czy „=”, na ich bezpieczne odpowiedniki. Dzięki temu struktura całego adresu URL nie zostanie naruszona. Tryb „Koduj cały URI” służy do naprawiania już istniejących, ale potencjalnie niepoprawnych adresów, zachowując znaki takie jak „/” czy „?”.

Czym różni się kodowanie spacji jako „%20” od „+”?

„%20” to standardowy, oficjalny sposób kodowania spacji w adresach URL zgodnie ze specyfikacją RFC 3986. Znak „+” jest starszą konwencją, używaną głównie w danych przesyłanych z formularzy internetowych (w typie application/x-www-form-urlencoded). Chociaż wiele serwerów interpretuje oba znaki tak samo, „%20” jest bardziej uniwersalne i zalecane. Nasze narzędzie oferuje opcję kodowania jako „+” dla zapewnienia zgodności ze starszymi systemami.

Jak narzędzie „Kodowanie URL” obsługuje polskie znaki, takie jak „ą”, „ś”, „ż”?

Narzędzie wykorzystuje standard kodowania znaków UTF-8, który jest uniwersalnym standardem w internecie. Każdy polski znak diakrytyczny jest najpierw reprezentowany jako sekwencja jednego lub więcej bajtów w UTF-8, a następnie każdy z tych bajtów jest kodowany procentowo. Na przykład litera „ż” jest zamieniana na sekwencję „%C5%BC”. Gwarantuje to, że polskie znaki i inne symbole międzynarodowe będą poprawnie przesyłane i odczytywane na całym świecie.

Mój link przestał działać po dodaniu parametru z nazwą „Książka & Film”. Dlaczego?

Znak „&” (ampersand) jest w adresach URL znakiem zastrzeżonym, który służy do oddzielania od siebie kolejnych parametrów. Użycie go wewnątrz wartości parametru, np. ?produkt=Książka & Film, powoduje, że serwer interpretuje to jako dwa osobne parametry: produkt=Książka oraz Film. Aby tego uniknąć, znak „&” w wartości musi zostać zakodowany jako „%26”. Użyj trybu „Koduj komponent”, aby poprawnie zakodować całą wartość „Książka & Film”.

Czy muszę kodować cały adres URL, czy tylko jego fragmenty?

Zazwyczaj koduje się tylko te fragmenty danych, które są dynamicznie wstawiane do adresu URL – na przykład hasła wyszukiwania, wartości parametrów UTM czy nazwy plików. Nie należy kodować całego, już poprawnego adresu (np. https://www.przyklad.pl/). Kodowanie całego adresu mogłoby zniszczyć jego strukturę, zamieniając znaki „/” czy „:” na ich zakodowane wersje. Narzędzie „Kodowanie URL” jest przeznaczone głównie do przygotowywania danych przed ich umieszczeniem w linku.

Jaka jest różnica między kodowaniem a [[page:3816|dekodowaniem URL]]?

Są to dwa odwrotne procesy. Narzędzie „Kodowanie URL” przekształca tekst (w tym znaki specjalne i polskie litery) na format bezpieczny do użycia w adresie internetowym, używając kodów procentowych (np. „ż” staje się „%C5%BC”). Z kolei narzędzie do dekodowania URL wykonuje operację przeciwną: zamienia kody procentowe z powrotem na ich oryginalną, czytelną dla człowieka postać.