Koder URL: Bezpłatne Escapowanie Znaków Specjalnych w Adresach URL Online
Darmowe narzędzie do escapowania ciągów URL, które natychmiast koduje znaki specjalne. Konwertuje spacje, Unicode i symbole do formatu percent-encoded. Idealne dla API, formularzy internetowych i międzynarodowych adresów URL. Wypróbuj już teraz!
Enkoder Ciągów URL
Dokumentacja
Kodowanie URL: na czym polega i jak działa
Kodowanie URL, nazywane także kodowaniem procentowym, to sposób przedstawiania znaków w adresie internetowym z użyciem jedynie niewielkiego zestawu bezpiecznych znaków ASCII. Polega na zastąpieniu niebezpiecznego znaku symbolem %, po którym następują dwie cyfry szesnastkowe. To narzędzie do kodowania ciągów URL koduje tekst tak samo jak wbudowana funkcja JavaScriptu encodeURIComponent.
Dlaczego adresy URL wymagają kodowania
Adres URL może zawierać tylko ograniczony zestaw znaków: litery, cyfry i kilka znaków interpunkcyjnych. Spacje, litery diakrytyzowane, znaki alfabetów innych niż łaciński oraz symbole takie jak & czy = mogą uszkodzić adres URL lub zmienić jego znaczenie, jeśli wystąpią w nim bez kodowania. Na przykład spacja w odsyłaczu może spowodować, że przeglądarka lub serwer odczyta adres URL jako dwa oddzielne fragmenty. Kodowanie procentowe zastępuje te znaki kodem, który każda przeglądarka i każdy serwer odczytają w ten sam sposób.
Znaki pozostawiane bez zmian przez to narzędzie
To narzędzie nigdy nie zmienia następujących znaków. Są przekazywane bezpośrednio:
- Wielkie i małe litery:
A–Z,a–z - Cyfry:
0–9 - Znaki interpunkcyjne
-._~!*'()
Wszystkie pozostałe znaki są kodowane procentowo, w tym:
- Znak spacji oraz znaki interpunkcyjne, takie jak
:/?#[]@$&+,;= - Litery diakrytyzowane oraz wszystkie inne znaki spoza ASCII i znaki Unicode
- Dosłowny znak
%, który zawsze staje się%25, nawet jeśli już był częścią sekwencji zakodowanej procentowo
Niektóre ogólne przewodniki dotyczące składni URL zaliczają ! * ' ( i ) do innych znaków interpunkcyjnych, które w pewnych kontekstach „mogą wymagać kodowania”. To konkretne narzędzie ich nie koduje, ponieważ stosuje zestaw reguł encodeURIComponent, w którym są one traktowane jako bezpieczne.
Jak obliczyć ciąg zakodowany procentowo (wzór)
Narzędzie sprawdza każdy znak wejściowy po kolei i stosuje następującą regułę:
- Jeśli znak należy do wymienionych wyżej znaków pozostawianych bez zmian, pozostaw go w niezmienionej postaci.
- W przeciwnym razie przekonwertuj znak na sekwencję bajtów UTF-8. Litery alfabetu łacińskiego z diakrytykami oraz litery greckie, cyrylickie i arabskie zajmują dwa bajty. Znaki chińskie, japońskie i koreańskie zajmują trzy. Emoji zajmują cztery.
- Zapisz każdy bajt jako dwucyfrową liczbę szesnastkową.
- Umieść
%przed każdą parą cyfr szesnastkowych. - Połącz wyniki w tej samej kolejności, aby utworzyć zakodowany ciąg.
Przykład obliczeniowy
Dane wejściowe: Jürgen & Björk
Analiza znak po znaku:
| Znak | Wynik |
|---|---|
J | J (bez zmian) |
ü | %C3%BC (bajty UTF-8 0xC3, 0xBC) |
rgen | rgen (bez zmian) |
(spacja) | %20 |
& | %26 |
(spacja) | %20 |
Bj | Bj (bez zmian) |
ö | %C3%B6 (bajty UTF-8 0xC3, 0xB6) |
rk | rk (bez zmian) |
Wynik: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Drugi przykład pokazuje działanie zestawu znaków pozostawianych bez zmian. Zakodowanie ciągu -_.!~*'() daje -_.!~*'(), czyli dokładnie ten sam tekst, ponieważ każdy jego znak należy do zestawu znaków niezastrzeżonych. Zakodowanie ciągu 100% daje 100%25, ponieważ sam znak % nie jest znakiem bezpiecznym.
Dekodowanie ciągu zakodowanego procentowo
Dekodowanie odwraca ten proces: każda sekwencja %XX jest odczytywana jako bajt zapisany szesnastkowo, bajty są ponownie łączone w pierwotny znak UTF-8, a znak zastępuje sekwencję. Na przykład %C3%BC jest dekodowane z powrotem do ü, a %20 jest dekodowane do spacji. To narzędzie tylko koduje; do odwrócenia tego procesu potrzebny jest osobny dekoder.
Typowe zastosowania
Kodowania procentowego używa się zawsze wtedy, gdy tekst wpisany przez użytkownika, a nie tekst zapisany przez programistę, ma stać się częścią adresu URL:
- Pola wyszukiwania, które umieszczają wyszukiwane hasło w pasku adresu, takie jak
?q=shoes%20%26%20bags - Parametry zapytania zawierające imiona i nazwiska, adresy lub inne dane użytkownika
- Odsyłacze do stron, których tytuły są zapisane w językach używających liter diakrytyzowanych lub alfabetów innych niż łaciński
- Żądania API przekazujące tokeny lub identyfikatory jako część adresu URL
Przykłady kodu
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5Funkcja quote w Pythonie zawsze pozostawia bez zmian litery, cyfry oraz - . _ ~. Pięć dodatkowych
znaków ! * ' ( ) trzeba wymienić w parametrze safe, aby uzyskać zgodność z tym narzędziem. Bez
nich funkcja quote zwraca zamiast tego %21 %2A %27 %28 %29.
Historia
Idea kodowania niebezpiecznych znaków w adresie URL sięga dokumentu RFC 1738 z (4410 cm) 1994 roku, jednego z pierwszych dokumentów definiujących format URL. Dokument RFC 3986, opublikowany w 2005 roku, zaktualizował te reguły i formalnie zdefiniował zestaw znaków „niezastrzeżonych”, które nigdy nie wymagają kodowania. Funkcja encodeURIComponent JavaScriptu, na której opiera się to narzędzie, stosuje nieco szerszy zestaw znaków niezastrzeżonych niż RFC 3986: pozostawia także bez kodowania znaki ! * ' ( i ), zgodnie z wcześniejszą wersją specyfikacji URI.
Często zadawane pytania
Jaka jest różnica między kodowaniem URL a zabezpieczaniem URL?
To to samo. Oba terminy opisują kodowanie procentowe, w którym znak jest zastępowany przez %, po którym następują dwie cyfry szesnastkowe.
Dlaczego znaki !, *, ', ( i ) pozostają w tym narzędziu bez zmian?
To narzędzie używa funkcji encodeURIComponent, która traktuje te pięć znaków jako bezpieczne i pozostawia je dokładnie w takiej postaci, w jakiej zostały wpisane. Inne funkcje kodujące, a także niektóre serwery, mogą nadal wymagać ich zakodowania, dlatego w razie problemu należy sprawdzić system docelowy.
Jaka jest różnica między %20 a + oznaczającymi spację?
Oba oznaczają spację. %20 to ogólny zapis procentowy spacji. Znak + jest szczególnym przypadkiem używanym wyłącznie w danych application/x-www-form-urlencoded, czyli w formacie używanym przy wysyłaniu formularzy HTML, a nie przez to narzędzie.
Czy to narzędzie dekoduje tekst, który już został zakodowany?
Nie. Narzędzie tylko koduje. Jeśli dane wejściowe zawierają już znak %, % jest traktowany jako znak dosłowny i w wyniku staje się %25, zamiast pozostać bez zmian.
Jak są obsługiwane znaki spoza alfabetu łacińskiego, takie jak tekst chiński lub arabski?
Każdy znak jest najpierw konwertowany na sekwencję bajtów UTF-8, a następnie każdy bajt jest kodowany procentowo. Znak chiński zajmuje trzy bajty, więc daje trzy grupy %XX. Litera arabska zajmuje dwa bajty, więc daje dwie grupy.
Kiedy narzędzie odmawia zakodowania tekstu? Tylko wtedy, gdy tekst zawiera połowę pary zastępczej. Para zastępcza to dwuczęściowy kod przechowujący znak powyżej U+FFFF, na przykład emoji. Pojedyncza połowa nie ma prawidłowej postaci UTF-8, dlatego narzędzie wyświetla błąd zamiast wyniku. Zwykłe wpisywanie tekstu nie powoduje takiej sytuacji; zazwyczaj powstaje ona w wyniku skopiowania uciętego tekstu lub uszkodzonego odsyłacza.
Czy należy kodować cały adres URL, czy tylko jego część?
Należy kodować tylko części zawierające dane użytkownika, takie jak wartości parametrów zapytania lub segmenty ścieżki, a nie części tworzące strukturę adresu URL, takie jak https:// i nazwa domeny. Zakodowanie całego adresu URL za pomocą kodera komponentów zamieniłoby również jego znaki :, / i ? na kody procentowe, uszkadzając adres.