Preskoči na sadržaj

URL Enkoder: Besplatno Escape Specijalni Znakovi u URL-ovima Online

Besplatni alat za escape URL stringova koji trenutno kodira specijalne znakove. Pretvorite razmake, Unicode i simbole u percent-kodirani format. Savršeno za API-je, web obrasce i međunarodne URL-ove. Isprobajte sada!

Escape-anje URL niza

Kalkulator učitavanja...
📚

Dokumentacija

Kodiranje URL-a: što je i kako funkcionira

Kodiranje URL-a, koje se naziva i kodiranje postocima, način je predstavljanja znakova u web-adresi upotrebom samo malog skupa sigurnih ASCII znakova. Funkcionira tako da se nesiguran znak zamijeni znakom %, nakon kojeg slijede dvije heksadecimalne znamenke. Ovaj alat za izbjegavanje znakova u URL-u kodira tekst na isti način kao JavaScriptova ugrađena funkcija encodeURIComponent.

Zašto URL-ove treba kodirati

URL smije sadržavati samo ograničen skup znakova: slova, znamenke i nekoliko interpunkcijskih znakova. Razmaci, slova s dijakritičkim znakovima, znakovi iz nelatiničnih pisama i simboli kao što su & ili = mogu pokvariti URL ili promijeniti njegovo značenje ako se u njemu pojave bez kodiranja. Razmak unutar poveznice, primjerice, može uzrokovati da preglednik ili poslužitelj URL pročita kao dva odvojena dijela. Kodiranje postocima zamjenjuje te znakove kodom koji svaki preglednik i poslužitelj mogu protumačiti na isti način.

Znakovi koje ovaj alat ostavlja nepromijenjenima

Ovaj alat nikada ne mijenja sljedeće znakove. Prolaze izravno:

  • Velika i mala slova: A–Z, a–z
  • Znamenke: 0–9
  • Interpunkcijski znakovi - . _ ~ ! * ' ( )

Svaki se drugi znak kodira postocima, uključujući:

  • Razmak i interpunkcijske znakove kao što su : / ? # [ ] @ $ & + , ; =
  • Slova s dijakritičkim znakovima te svi drugi znakovi koji nisu ASCII ili su Unicodeovi znakovi
  • Sam literalni znak %, koji uvijek postaje %25, čak i ako je već dio slijeda kodiranog postocima

Neki opći vodiči za sintaksu URL-a svrstavaju ! * ' ( i ) zajedno s drugim interpunkcijskim znakovima među znakove koje „možda treba kodirati” u nekim kontekstima. Ovaj ih određeni alat ne kodira jer slijedi skup pravila funkcije encodeURIComponent, prema kojima se smatraju sigurnima.

Kako izračunati niz kodiran postocima (formula)

Alat provjerava svaki znak ulaza jedan po jedan i primjenjuje ovo pravilo:

  1. Ako je znak jedan od gore navedenih nepromijenjenih znakova, ostavlja se takvim kakav jest.
  2. U suprotnom se znak pretvara u sekvencu bajtova UTF-8. Slova latinične abecede s dijakritičkim znakovima te grčka, ćirilična i arapska slova koriste dva bajta. Kineski, japanski i korejski znakovi koriste tri. Emoji koriste četiri.
  3. Svaki se bajt zapisuje kao dvoznamenkasti heksadecimalni broj.
  4. Ispred svakog heksadecimalnog para stavlja se %.
  5. Rezultati se redom spajaju kako bi se oblikovao kodirani niz.

Primjer s izračunom

Ulaz: Jürgen & Björk

Obrada znak po znak:

ZnakRezultat
JJ (nepromijenjeno)
ü%C3%BC (bajtovi UTF-8 0xC3, 0xBC)
rgenrgen (nepromijenjeno)
(razmak)%20
&%26
(razmak)%20
BjBj (nepromijenjeno)
ö%C3%B6 (bajtovi UTF-8 0xC3, 0xB6)
rkrk (nepromijenjeno)

Izlaz: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Drugi primjer pokazuje kako funkcionira skup nepromijenjenih znakova. Kodiranje niza -_.!~*'() daje -_.!~*'(), potpuno isti tekst, jer svaki njegov znak pripada skupu ne rezerviranih znakova. Kodiranje niza 100% daje 100%25 jer sam znak % nije siguran znak.

Dekodiranje niza kodiranog postocima

Dekodiranjem se postupak obrće: svaki se slijed %XX čita kao heksadecimalni bajt, bajtovi se ponovno grupiraju u izvorni znak UTF-8, a znak zamjenjuje slijed. Primjerice, %C3%BC dekodira se natrag u ü, a %20 dekodira se u razmak. Ovaj alat samo kodira; za obrtanje postupka potreban je zaseban dekoder.

Uobičajene primjene

Kodiranje postocima upotrebljava se kad god tekst koji je upisala osoba, a ne tekst koji je napisao programer, treba postati dijelom URL-a:

  • Polja za pretraživanje koja pojam za pretraživanje stavljaju u adresnu traku, kao što je ?q=shoes%20%26%20bags
  • Parametri upita koji sadrže imena, adrese ili druge korisničke podatke
  • Poveznice na stranice s naslovima na jezicima koji upotrebljavaju slova s dijakritičkim znakovima ili nelatinična pisma
  • Zahtjevi API-ja koji prosljeđuju tokene ili identifikatore kao dio URL-a

Primjeri koda

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

Pythonova funkcija quote uvijek ostavlja slova, znamenke i - . _ ~ nepromijenjenima. Pet dodatnih znakova ! * ' ( ) mora se navesti u safe kako bi se ponašanje podudaralo s ovim alatom. Bez njih, quote umjesto toga vraća %21 %2A %27 %28 %29.

Povijest

Ideja kodiranja nesigurnih znakova u URL-u seže do RFC-a 1738 iz (4.410 cm) 1994, jednog od prvih dokumenata koji su definirali format URL-a. RFC 3986, objavljen 2005, ažurirao je pravila i formalno definirao skup „ne rezerviranih” znakova koje nikada nije potrebno kodirati. Funkcija encodeURIComponent u JavaScriptu, na kojoj se ovaj alat temelji, slijedi nešto širi skup ne rezerviranih znakova od RFC-a 3986: također ostavlja znakove ! * ' ( i ) nekodiranima, u skladu s ranijom verzijom specifikacije URI-ja.

Često postavljana pitanja

Koja je razlika između kodiranja URL-a i izbjegavanja znakova u URL-u? To je isto. Oba izraza opisuju kodiranje postocima, pri kojem se znak zamjenjuje znakom %, nakon kojeg slijede dvije heksadecimalne znamenke.

Zašto u ovom alatu znakovi !, *, ', ( i ) ostaju nepromijenjeni? Ovaj alat upotrebljava encodeURIComponent, koji tih pet znakova smatra sigurnima i ostavlja ih točno onakvima kakvi su upisani. Druge funkcije za kodiranje i neki poslužitelji ipak mogu očekivati da budu kodirani, pa provjerite odredišni sustav ako to uzrokuje problem.

Koja je razlika između %20 i + za razmak? Oboje predstavlja razmak. %20 opći je način kodiranja razmaka postocima. Znak + poseban je slučaj koji se upotrebljava samo unutar podataka application/x-www-form-urlencoded, formata koji koriste slanja HTML obrazaca, a ne ovaj alat.

Dekodira li ovaj alat tekst koji je već kodiran? Ne. On samo kodira. Ako ulaz već sadrži znak %, taj se % tretira kao literalni znak i u izlazu postaje %25, umjesto da ostane nepromijenjen.

Kako se obrađuju nelatinični znakovi, poput kineskog ili arapskog teksta? Svaki se znak najprije pretvara u svoju sekvencu bajtova UTF-8, a zatim se svaki bajt kodira postocima. Kineski znak koristi tri bajta, pa daje tri skupine %XX. Arapsko slovo koristi dva bajta, pa daje dvije.

Kada alat odbija kodirati tekst? Samo kad tekst sadrži polovicu surogatnog para. Surogatni par dvodijelni je kod u kojem se pohranjuje znak iznad U+FFFF, primjerice emoji. Samostalna polovica nema valjani oblik UTF-8, pa alat umjesto rezultata prikazuje pogrešku. Uobičajenim upisivanjem takav znak ne može nastati; obično potječe od skraćene kopije ili neispravne poveznice.

Treba li kodirati cijeli URL ili samo njegov dio? Kodirajte samo dijelove koji sadrže korisničke podatke, poput vrijednosti upita ili segmenata putanje, a ne dijelove koji čine strukturu URL-a, poput https:// i naziva domene. Kodiranje cijelog URL-a enkoderom komponenti također bi njegove znakove :, / i ? pretvorilo u kodove postotaka, čime bi se adresa pokvarila.

Reference

  1. RFC 3986 — Uniform Resource Identifier (URI): opća sintaksa
  2. Kodiranje postocima — Wikipedija
  3. MDN — encodeURIComponent()
  4. Standard URL-a — WHATWG