Menu

Koder / dekoder URL

Bezpiecznie koduj i dekoduj fragmenty adresów URL.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest URL encoder?

URL encoder (nazywany też koderem procentowym lub koderem URI) zastępuje znaki zarezerwowane lub niebezpieczne w adresach URL znakiem % i dwiema cyframi szesnastkowymi. Programiści używają go przy budowaniu query stringów, escapowaniu segmentów ścieżki, udostępnianiu adresów ze spacjami lub znakami spoza ASCII i debugowaniu przekierowań.

Adresy URL mogą zawierać tylko niewielki zestaw znaków ASCII. Wszystko spoza tego zestawu (spacje, polskie znaki, emoji albo symbole zarezerwowane, takie jak ?, #, &, =, gdy występują jako dane) trzeba zakodować procentowo, żeby przetrwało drogę z przeglądarki do serwera.

JavaScript udostępnia dwie funkcje kodujące: encodeURI (zachowuje strukturę adresu: /, ?, #, &) oraz encodeURIComponent (koduje wszystkie znaki zarezerwowane). Używaj encodeURIComponent do *wartości* wstawianych do query stringów, a encodeURI do *całych adresów URL*, które mają dalej działać.

Czego nauczysz się, kodując adresy URL

  • Kodowanie procentowe zastępuje pojedynczy bajt znakiem % i dwiema cyframi szesnastkowymi, na przykład spacja zamienia się w %20.
  • Znaki zarezerwowane (: / ? # & = +) mają znaczenie w strukturze adresu. Trzeba je kodować, gdy są danymi, a nie separatorami.
  • Tekst spoza ASCII (polskie znaki, emoji, cyrylica, CJK) jest najpierw zamieniany na bajty UTF-8, a potem każdy bajt jest kodowany procentowo.
  • encodeURI zachowuje strukturę adresu, a encodeURIComponent koduje wszystkie znaki zarezerwowane: dobierz właściwą funkcję do właściwego miejsca.

Jak kodować i dekodować adresy URL krok po kroku

  1. Wybierz kierunek

    Wybierz Koduj, jeśli masz surowy tekst i chcesz, żeby był bezpieczny w URL. Wybierz Dekoduj, jeśli masz ciąg zakodowany znakami % i chcesz odzyskać oryginalny tekst.

  2. Wybierz tryb kodowania

    Wybierz encodeURIComponent (koduje wszystkie znaki zarezerwowane) dla wartości w query stringu albo encodeURI (zachowuje strukturę) dla całych adresów URL.

  3. Wklej dane

    Wklej surowy tekst albo zakodowany adres URL. Dane w wielu liniach działają przy dekodowaniu wsadowym.

  4. Skopiuj wynik

    Skopiuj zakodowaną lub zdekodowaną wartość. Konwersja działa lokalnie w przeglądarce, więc poufne dane w adresach zostają na twoim komputerze.

Najczęstsze kodowania URL: szybka ściągawka

Znaki, które najczęściej zobaczysz w zakodowanej postaci, wraz z ich formą procentową. Znaczenie znaków zarezerwowanych opisuje RFC 3986.

ZnakZakodowanyDlaczego
spacja%20Spacje nie są dozwolone w adresach URL
!%21Zarezerwowany przez niektóre serwery
#%23Oznacza początek fragmentu
$%24Znak zarezerwowany
&%26Oddziela parametry zapytania
+%2BOznacza spację w treści form-encoded
/%2FSeparator ścieżki
:%3AOddziela schemat od hosta
=%3DOddziela klucz od wartości w query stringu
?%3FOznacza początek query stringu
@%40Oddziela dane użytkownika od hosta
bajt UTF-8%C3%A9Każdy bajt spoza ASCII jest kodowany

Przykłady kodowania URL do wypróbowania

Zakoduj zapytanie wyszukiwania

Surowy

hello world & more

Zakodowany

hello%20world%20%26%20more

Spacje zamieniają się w %20, a & w %26, żeby nie został pomylony z separatorem parametrów zapytania.

Zakoduj znaki spoza ASCII

Surowy

café

Zakodowany

caf%C3%A9

é to w UTF-8 sekwencja bajtów 0xC3 0xA9, więc forma zakodowana ma *dwie* grupy %XX dla tego jednego znaku.

encodeURI kontra encodeURIComponent

Surowy

https://example.com/path?q=hello world

encodeURI

https://example.com/path?q=hello%20world

encodeURIComponent

https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world

encodeURI zachowuje strukturę adresu (ukośniki, ?, =). encodeURIComponent koduje wszystkie znaki zarezerwowane: używaj go dla wartości wstawianych do query stringu, nigdy dla całego adresu URL.

Częste błędy przy kodowaniu URL

  • Używanie encodeURI dla wartości w query stringu: & i = przechodzą przez kodowanie bez zmian i psują odczyt parametrów.
  • Podwójne kodowanie adresu. %2520 zamiast %20 to klasyczny objaw błędu podwójnego kodowania.
  • Zapominanie, że + oznacza spację w treści application/x-www-form-urlencoded, ale w ścieżce lub zapytaniu URL jest dosłownym znakiem +.
  • Doklejanie surowych danych od użytkownika do adresu URL przez interpolację ciągów. Zawsze najpierw zakoduj wartość.
  • Zakładanie, że decodeURIComponent przyjmie dowolny ciąg: rzuca błąd przy samotnym %, po którym nie ma dwóch cyfr szesnastkowych.

Kodowanie URL: najczęstsze pytania

Co to jest kodowanie URL?
Kodowanie URL (nazywane też kodowaniem procentowym, ang. percent-encoding) to sposób zapisu znaków, które mają specjalne znaczenie w adresach URL lub nie są bezpieczne w transmisji, przez zastąpienie ich znakiem % i dwiema cyframi szesnastkowymi.
Czym różni się encodeURI od encodeURIComponent?
encodeURI zachowuje znaki struktury adresu (/, ?, #, &, =, +). encodeURIComponent koduje je wszystkie, i właśnie tego potrzebujesz dla pojedynczych *wartości* umieszczanych w adresie URL: wartości parametrów zapytania, segmentów ścieżki, fragmentów. Zobacz dokumentację MDN dla encodeURI i encodeURIComponent.
Dlaczego spacja zamienia się w %20?
Spacje nie są dozwolone w adresach URL, więc zastępuje się je %20, czyli procentowym zapisem znaku spacji ASCII (0x20 szesnastkowo).
Kiedy kodować adres URL?
Koduj każdą wartość pochodzącą od użytkownika lub generowaną dynamicznie, zanim wstawisz ją do adresu URL: wartości query stringu, segmenty ścieżki, cele przekierowań, parametry OAuth. Nigdy nie zakładaj, że surowe dane są bezpieczne w URL.
Czy kodowanie URL można odwrócić?
Tak, to właśnie dekodowanie URL (URL decode). decodeURI, decodeURIComponent albo dowolny URL decoder zamienia kodowanie procentowe z powrotem na oryginalne znaki.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ