bitlvl
SR

URL kodiranje / dekodiranje

Kodirajte tekst za URL, ili dekodirajte procentne escape sekvence nazad u tekst. Izaberite režim koji odgovara mestu na koje tekst ide. Nalepite ceo URL da ga raščlanite na delove.

Rezultati i poruke ovog alata prikazuju se na engleskom.

Šta percent-encoding radi

URL može da sadrži samo ograničen skup ASCII znakova, a neki od njih (/, ?, &, =, #) imaju strukturno značenje. Svaki drugi bajt se piše kao znak procenta i dve heks cifre: razmak je %20, & je %26, a UTF-8 bajtovi slova é su %C3%A9. Pravila definiše RFC 3986.

Tri režima, jer kontekst je bitan

RežimEscape-ujeZadržavaKoristite kad
Komponenta upitaSve osim A–Z a–z 0–9 - _ . ~Samo nerezervisane znakoveStavljate vrednost u parametar upita ili segment putanje: ?q=…. Isto kao encodeURIComponent.
Ceo URLRazmake, ne-ASCII, navodnike, < >…: / ? # [ ] @ & = + $ , ;Sređujete kompletan URL bez narušavanja njegove strukture. Isto kao encodeURI.
Podaci formeKao komponenta, ali razmak postaje +Tela HTML formi (application/x-www-form-urlencoded), što većina HTTP biblioteka šalje podrazumevano.

Najčešća greška je korišćenje kodiranja za ceo URL na vrednosti koja sadrži & ili =: server podeli parametar na dva. Kodirajte vrednosti pravilima za komponentu i tek ih potom spajajte.

Znakovi plus

U telu forme (i u query stringu, po konvenciji) + znači razmak, pa dekodiranje podataka forme mora da pretvori + u razmak, dok je doslovni plus morao da bude poslat kao %2B. U putanji je + samo plus. Prekidač Dekodiraj + kao razmak pokriva obe situacije.

Dvostruko kodiranje

Ako u URL-u vidite %2520, nešto je kodiralo već kodirani string: %20 je tretiran kao tekst i njegov % je postao %25. Dekodirajte dvaput da povratite original, pa popravite kod koji je kodirao dvaput.

Pitanja

Šta je %20?

Razmak. 0x20 je ASCII kod za razmak, pa ga percent-encoding piše kao %20. U podacima forme može da se pojavi kao + umesto toga.

Koja je razlika između encodeURI i encodeURIComponent?

encodeURIComponent escape-uje svaki znak koji bi mogao da bude strukturni (uključujući /, ?, & i =) i služi za pojedinačne vrednosti. encodeURI ih ostavlja na miru da bi ceo URL ostao URL. Koristite režim Komponenta upita za prvo, Ceo URL za drugo.

Kako se kodiraju znakovi koji nisu engleski?

Kao bajtovi njihovog UTF-8 oblika, svaki zapisan kao %XX. é su dva bajta (%C3%A9), 日 su tri (%E6%97%A5). Stariji sistemi su ponekad koristili Latin-1, što daje %E9 za é; moderni pregledači i API-ji koriste UTF-8.

Zašto dekodiranje mog stringa ne uspeva?

Ili iza % ne slede dve heks cifre (usamljeni znak procenta mora da se piše kao %25), ili escape-ovani bajtovi ne čine ispravan UTF-8. Poruka o grešci kaže koje od toga.

Da li da kodiram ceo URL ili samo parametre?

Samo parametre (i svaki segment putanje koji sadrži korisnički tekst). Gradite URL od već kodiranih delova da bi graničnici ostali neescape-ovani.