ByteCompress

Koder URL

Koduj procentowo znaki specjalne w URL-ach lub pojedynczych składnikach URI, aby były bezpieczne do przesyłania w żądaniach HTTP, ciągach zapytań i danych formularzy. Zgodne z RFC 3986.

0 chars
FreeClient-sideNo signup

Znak spacji w ciągu zapytań URL cicho łamie żądanie. RFC 3986 (Uniform Resource Identifier: Generic Syntax) definiuje, które znaki są bezpieczne w URL i które muszą być kodowane procentowo. Kodowanie procentowe zastępuje każdy niebezpieczny bajt znakiem % następującym po dwóch dużych cyfrach szesnastkowych. Ten kodownik działający w przeglądarce stosuje RFC 3986 natychmiast, bez przesyłania Twoich danych gdziekolwiek. Użyj go do kodowania pełnych URL-i lub pojedynczych wartości parametrów zapytań i uzyskaj zgodny z normami wynik za każdym razem.

Jak zakodować URL

  1. Wklej URL lub tekst do pola wejściowego.
  2. Wybierz tryb Pełny URL, aby zakodować tylko niebezpieczne znaki, lub tryb Składnik, aby zakodować wszystkie znaki specjalne, w tym & i =.
  3. Wynik zakodowany procentowo pojawi się w panelu wyników.
  4. Skopiuj zakodowany ciąg do użycia w swoim żądaniu, kodzie lub dokumentacji.

Zrozumienie kodowania procentowego

Standard RFC 3986

RFC 3986 (IETF, 2005) definiuje dwie kategorie znaków w URI. Znaki niezastrzeżone (A-Z a-z 0-9 - _ . ~) mogą występować bez kodowania. Znaki zastrzeżone (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) mają specjalne znaczenie strukturalne i mogą, ale nie muszą wymagać kodowania w zależności od kontekstu. Każdy inny znak - w tym spacje, znaki Unicode nie-ASCII i znaki spoza tych zestawów - musi być kodowany procentowo.

encodeURI vs encodeURIComponent

JavaScript oferuje dwie funkcje kodowania. encodeURI() koduje pełny URL i pozostawia znaki zastrzeżone nietknięte, ponieważ pełnią one role strukturalne. encodeURIComponent() koduje również znaki strukturalne, traktując je jako dane literalne - jest zaprojektowane dla pojedynczych nazw i wartości parametrów zapytań, gdzie & i = mogłyby zepsuć składnię URL. Tryb Pełny URL w tym narzędziu odpowiada encodeURI; tryb Składnik odpowiada encodeURIComponent.

Przykład

Wejście

Cześć Świecie! @2024

Wynik (tryb składnika)

Cześć%20Świecie!%20%402024

Spacja koduje się jako %20 (standard RFC 3986); @ staje się %40. Wykrzyknik jest znakiem niezastrzeżonym w niektórych kontekstach i może, ale nie musi być kodowany w zależności od trybu.

Typowe przypadki użycia

  • Wartości parametrów zapytań - Koduj wartości zawierające &, = lub + przed dodaniem do URL-a
  • Zapytania wyszukiwarek - Koduj dane wejściowe użytkownika przed zbudowaniem URL-a przekierowania
  • Tworzenie żądań API - Koduj segmenty ścieżek zawierające ukośniki, spacje lub znaki specjalne
  • Parametry OAuth - Podstawowe ciągi podpisu OAuth 1.0 wymagają kodowania procentowego zgodnie z RFC 5849

Typowe błędy

  • Podwójne kodowanie - Jeśli wartość jest już zakodowana procentowo, ponowne kodowanie koduje sam %, produkując %2520 zamiast %20
  • Używanie trybu pełnego URL-a dla wartości parametrów - Tryb pełnego URL-a pozostawia & i = niezakodowane, łamiąc składnię ciągu zapytań; użyj trybu składnika dla wartości parametrów
  • Zapominanie o znakach nie-ASCII - Tekst nie-ASCII musi być najpierw przekształcony na bajty UTF-8, a następnie każdy bajt kodowany procentowo osobno

Aby odwrócić proces, użyj Dekodera URL. Dla danych binarnych przesyłanych w parametrach zapytań URL najpierw zakoduj za pomocą Kodera Base64 w trybie bezpiecznym dla URL, a następnie wynik jest już bezpieczny dla URL bez dodatkowego kodowania procentowego.

Najczęściej Zadawane Pytania

Jaka jest różnica między kodowaniem URL a kodowaniem Base64?

Kodowanie procentowe zastępuje niebezpieczne znaki sekwencjami szesnastkowymi %XX, zachowując bezpieczne znaki w oryginalnej formie, więc długość wyjścia jest podobna do długości wejścia. Base64 konwertuje wszystkie dane na alfabet 64-znakowy, zwiększając rozmiar o 33%, ale zapewniając, że wynik zawiera tylko bezpieczne znaki ASCII. Kodowanie procentowe sprawia, że konkretne znaki są bezpieczne w URL; Base64 koduje dowolne dane binarne jako tekst.

Kiedy powinienem używać encodeURI vs encodeURIComponent w JavaScript?
encodeURI() służy do kodowania pełnego URL-a - zachowuje znaki strukturalne, takie jak : / ? # & =. encodeURIComponent() służy do kodowania pojedynczych wartości wewnątrz URL-a - koduje znaki strukturalne, aby były traktowane jako dane literalne, a nie składnia URL. W razie wątpliwości użyj encodeURIComponent() dla wszelkich danych wprowadzonych przez użytkownika.
Dlaczego spacja staje się %20 w niektórych kodownikach, a + w innych?
%20 to kodowanie procentowe RFC 3986 dla spacji i jest poprawne dla segmentów ścieżek URI oraz wartości zapytań. Znak + reprezentujący spację jest specyficzny dla application/x-www-form-urlencoded (wysyłanie formularzy HTML), które powstało przed RFC 3986. Oba są ważne w swoich kontekstach, ale %20 jest uniwersalnym standardem poza formularzami HTML.
Czy kodowanie URL działa dla znaków nie-ASCII?

Tak. Znaki nie-ASCII są najpierw konwertowane na bajty UTF-8, a następnie każdy bajt jest kodowany procentowo osobno. Znak ş (U+015F) staje się %C5%9F. Chiński znak 中 (U+4E2D) staje się %E4%B8%AD. Nowoczesne przeglądarki i serwery oczekują kodowania UTF-8 dla znaków nie-ASCII w URL-ach.

Czy moje dane URL są przesyłane do waszych serwerów, gdy używam tego narzędzia?

Nie. Wszystkie operacje kodowania używają encodeURI() lub encodeURIComponent() działających lokalnie w Twojej przeglądarce. URL-e, parametry zapytań, tokeny uwierzytelniające i wszelkie inne dane, które wklejasz, nigdy nie są przesyłane do naszych serwerów.