Czym jest kodowanie procentowe?+−
Kodowanie procentowe (nazywane też kodowaniem URL) zastępuje znak symbolem % i jego dwucyfrową wartością szesnastkową, powtarzaną dla każdego bajtu jego reprezentacji UTF-8. Dzięki temu adres URL może przenosić spację (%20), znak & (%26) czy emoji bez mylenia tych znaków ze składnią samego adresu.
Jaka jest różnica między encodeURIComponent a encodeURI?+−
encodeURIComponent ucieka wszystko poza niewielkim zbiorem znaków niezarezerwowanych, co czyni ją właściwym wyborem dla pojedynczej wartości - parametru zapytania lub segmentu ścieżki - ponieważ ucieka też znaki takie jak & i =, które w innym przypadku zostałyby odczytane jako struktura URL. encodeURI jest przeznaczona dla całego adresu URL: pozostawia znaki strukturalne, takie jak :, /, ?, & i #, bez zmian, aby adres nadal działał, i ucieka tylko znaki, których adres URL naprawdę nie może zawierać, jak spacje. Przepuszczenie całego adresu URL przez encodeURIComponent psuje go, ponieważ zostałyby ucieczone również ukośniki i dwukropki.
Czy nadal powinienem używać escape() i unescape()?+−
Nie. Obie zostały uznane za przestarzałe już w pierwszej edycji standardu JavaScript, która wprowadziła też encodeURIComponent, ponieważ escape() nie koduje znaków spoza ASCII w sposób oczekiwany przez HTTP i nowoczesne adresy URL - dla wszystkiego poza Latin-1 używa niestandardowej formy %uXXXX, której decodeURIComponent nie potrafi odczytać z powrotem. To narzędzie zachowuje tę opcję wyłącznie po to, byś mógł sprawdzić, co wygenerował starszy system.
Dlaczego + w ciągu zapytania zamienia się w spację?+−
Ciągi zapytań historycznie pochodzą z przesyłania formularzy HTML, które używają formatu application/x-www-form-urlencoded: koduje on prawdziwą spację jako + zamiast %20, a parser tego narzędzia (podobnie jak URLSearchParams w JavaScripcie) traktuje przy dekodowaniu oba te znaki jako spację. Jeśli wartość rzeczywiście potrzebuje dosłownego znaku plus, musi on sam zostać zakodowany procentowo jako %2B.
Co się dzieje z powtórzonym parametrem, takim jak ?tag=a&tag=b?+−
Nic nie ginie - to narzędzie zachowuje każde wystąpienie, w kolejności, jako osobny wiersz w tabeli parametrów zapytania, dokładnie tak, jak większość frameworków serwerowych zbiera powtórzony klucz w listę. Edytowanie lub usuwanie jednego wiersza nie wpływa na pozostałe.
Dlaczego parser przyjął https:// dla mojego adresu URL?+−
Ciąg taki jak example.com/sciezka nie ma protokołu, więc ani przeglądarka, ani to narzędzie nie mogą wiedzieć, czy to adres internetowy, coś przeznaczonego dla innego protokołu, czy zwykły tekst. Zamiast go odrzucać, parser przyjmuje https://, abyś nadal mógł go sprawdzić i edytować - podpowiedź pojawia się za każdym razem, gdy tak się dzieje, a pole Protokół możesz poprawić, jeśli chodziło o inny schemat.