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.
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
- Wklej URL lub tekst do pola wejściowego.
- Wybierz tryb Pełny URL, aby zakodować tylko niebezpieczne znaki, lub tryb Składnik, aby zakodować wszystkie znaki specjalne, w tym
&i=. - Wynik zakodowany procentowo pojawi się w panelu wyników.
- 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%2520zamiast%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.