Czym Jest Kodowanie URL? Kompletnowe Wyjaśnienie Percent-encoding
Szybka odpowiedź
Kodowanie URL (percent-encoding) zastępuje unsafe znaki w URL przez % po którym następują dwie cyfry hex. Na przykład, spacja staje się %20, & staje się %26. Zapewnia, że URLe mogą być transmitowane bez ambiguity. Użyj naszego darmowego URL Encoder i Decoder.
Wstęp
Kodowanie URL, nazywane też percent-encoding, to mechanizm kodowania znaków specjalnych w URL tak, aby mogły być bezpiecznie transmitowane przez internet. URLe mogą zawierać tylko ograniczony zestaw znaków ASCII —litery, cyfry i kilka reserved znaków. Każdy inny znak (spacje, quotes, nie-ASCII litery) musi być zakodowany jako znak procenta (%) po którym następują dwie cyfry hex. Kodowanie URL jest zdefiniowane przez RFC 3986.
Krok po kroku
-
Dowiedz się, które znaki wymagają kodowania
Znaki niezarezerwowane (A-Z, a-z, 0-9, -, _, ., ~) nie wymagają kodowania. Znaki zastrzeżone (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) mają specjalne znaczenie w URLs i powinny być zakodowane, gdy są używane jako dane. Wszystkie pozostałe znaki (spacje, cudzysłowy, znaki inne niż ASCII) muszą być zakodowane.
-
Poznaj mechanizm kodowania
Każdy znak wymagający kodowania jest konwertowany do sekwencji bajtów UTF-8, a następnie każdy bajt jest reprezentowany jako %XX, gdzie XX to wartość szesnastkowa. Spacja (0x20) →%20. Znak spoza zestawu ASCII „é” (UTF-8: 0xC3 0xA9) → %C3%A9.
-
Rozróżnij encodeURI od encodeURIComponent
encodeURI() koduje pełny URL, ale zachowuje zastrzeżone znaki (:/?&=), które są częścią struktury URL. encodeURIComponent() koduje wszystko z wyjątkiem niezarezerwowanych znaków — używaj jej do wartości parametrów zapytania, gdzie znaki zarezerwowane są danymi, a nie strukturą.
-
Dekoduj zakodowany procentowo URLs
Dekodowanie odwraca kodowanie: %20 → spacja, %C3%A9 → é. Użyj decodeURI() dla pełnego URLs i decodeURIComponent() dla wartości parametrów zapytania. Nieprawidłowe sekwencje specjalne (takie jak %ZZ) powodują błędy.
Przykłady
Zakoduj spację
Wejście: hello world
Wyjście: hello%20world
Zakoduj tekst inny niż ASCII
Wejście: café
Wyjście: caf%C3%A9
Zakoduj wartość parametru zapytania
Wejście: name=John Doe & Co.
Wyjście: name%3DJohn%20Doe%20%26%20Co.
Typowe problemy
- Kodowanie całego URL, gdy tylko wartości wymagają kodowania — koduj wartości parametrów zapytania, a nie strukturę URL (://?&=).
- Podwójne kodowanie — jeśli URL jest już zakodowany, ponowne kodowanie daje %2520 zamiast %20. Najpierw dekoduj, jeśli nie masz pewności, czy jest już zakodowany.
- Nieprawidłowe użycie encodeURI i encodeURIComponent — encodeURI zachowuje znaki struktury URL; encodeURIComponent koduje je. Użyj tego ostatniego dla wartości parametrów zapytania.
- Nieprawidłowe sekwencje specjalne —%ZZ lub pojedynczy % na końcu są nieprawidłowe i podczas dekodowania będą zgłaszać błędy.
Porady
- Zawsze koduj wartości parametrów zapytania, które mogą zawierać spacje, znaki specjalne lub dane wprowadzone przez użytkownika, aby zapobiec wstrzyknięciu URL.
- Użyj encodeURIComponent() dla wartości parametrów zapytania i encodeURI() dla pełnego URLs, które wymaga jedynie zakodowania niebezpiecznych znaków.
- Kodowanie URL nie jest szyfrowaniem — każdy może je odszyfrować. Nigdy nie używaj go do ukrywania wrażliwych danych.
- Skorzystaj z naszego URL kodera i dekodera, aby uzyskać natychmiastową, prywatną konwersję w swojej przeglądarce.