Kodowanie

URL Encode/Decode

Kodowanie i dekodowanie URL — znaki wymagające zakodowania w linkach i parametrach zapytania.

URL encoding (percent-encoding) replaces characters that aren't allowed in a URL — spaces, non-Latin letters, special characters — with %XX sequences, where XX is the hex code of the byte. This keeps links and query parameters from getting mangled in transit.

How to use it

Common uses

Things to keep in mind

Encode parameter values, not the whole URL at once — otherwise you'll also encode the separators you need (:, /, ?, &).

JavaScript's encodeURIComponent and encodeURI encode different character sets — the former is meant specifically for parameter values.

Artykuł o tym narzędziu: URL Encode/Decode: percent-encoding w linkach

Najczęstsze pytania

Czym jest kodowanie URL (percent-encoding)?

To zamiana znaków specjalnych i spoza ASCII na sekwencje w postaci %XX, gdzie XX to wartość heksadecymalna bajtu. Dzięki temu tekst może bezpiecznie trafić do adresu URL lub parametru zapytania bez rozbijania jego struktury.

Czym różni się kodowanie URL od Base64 URL-safe?

To dwie różne rzeczy, które łatwo pomylić. Kodowanie URL zamienia pojedyncze znaki na sekwencje %XX i działa na dowolnym tekście, natomiast Base64 URL-safe to wariant Base64 z zamienionymi znakami + i / na - i _, używany do kodowania danych binarnych, a nie do escapowania URL-i.

Czym różnią się tryby Komponent i URI?

Tryb Komponent koduje wszystkie znaki specjalne, w tym &, = i ?, więc nadaje się do wartości pojedynczego parametru. Tryb URI zostawia znaki strukturalne adresu (jak ://, ? czy &) nietknięte, bo koduje cały adres URL, a nie jego fragment.

Czym jest podwójne kodowanie i jak je rozpoznać?

To błąd polegający na ponownym zakodowaniu już zakodowanego ciągu — znak % sam zamienia się na %25, więc %20 staje się %2520. Oznaką problemu są sekwencje w rodzaju %25XX w zdekodowanym wyniku.

Dlaczego spacja czasem jest kodowana jako +, a czasem jako %20?

+ dla spacji to format application/x-www-form-urlencoded, używany przez formularze i ciągi zapytania. %20 to standardowy percent-encoding z RFC 3986, poprawny w każdej części URL.

Artykuły: Kodowanie

Base64: po co jest kodowanie i jak działa

Jak Base64 zamienia dane binarne na tekst ASCII i kiedy naprawdę jest to potrzebne.

Base32: czym różni się od Base64 i kiedy jest wygodniejszy

Alfabet Base32 niewrażliwy na wielkość liter i sytuacje, w których jest wygodniejszy od Base64.

HTML Entities: jak bezpiecznie wyświetlać znaki specjalne

Dlaczego znaki < > & trzeba escapować i jak to zapobiega uszkodzeniu znaczników.

JWT: budowa tokenu i co znaczy „dekodowanie" JWT

Header, payload i signature tokenu JWT oraz dlaczego dekodowanie to nie to samo co weryfikacja podpisu.

Unicode Escape: co oznaczają sekwencje \uXXXX

Skąd biorą się sekwencje takie jak \u0041 w JSON i ciągach JS oraz co oznaczają.

ROT13 i szyfr Cezara: proste podstawianie znaków

Dlaczego przesunięcie o 13 liter sprawia, że ROT13 jest samoodwrotny, i po co się go dziś używa.

Punycode: jak umiędzynarodowione domeny działają w DNS

Jak domena z niełacińskimi znakami zamienia się w formę ASCII z prefiksem xn--.

Alfabet Morse'a: jak tekst zamienia się w kropki i kreski

Zasada kodowania liter jako kropek i kresek oraz gdzie alfabet Morse'a jest dziś stosowany.

Data URI: kiedy osadzać obrazy bezpośrednio w kodzie

Jak Data URI osadza zawartość pliku bezpośrednio w HTML lub CSS i kiedy się to opłaca.

Gzip + Base64: kompresja danych do przesyłania jako tekst

Dlaczego skompresowane dane binarne dodatkowo koduje się w Base64, zanim trafią do pola tekstowego.

XML Entities: escapowanie znaków w dokumentach XML

Pięć obowiązkowych encji XML, bez których dokument psuje się podczas parsowania.