CodeKitHub
Kodeerimistööriistad

URL Kodeerija / Dekodeerija veebis

Viimati uuendatud:

Protsentkodeeri tekst, et seda saaks turvaliselt URL-is kasutada, või dekodeeri kodeeritud URL tagasi loetavaks tekstiks. Vali komponendirežiim (kodeerib kõik, sobib päringuparameetri väärtuste jaoks) või täisURL-i režiim (jätab struktuuri :// ? & puutumata). Töötab täielikult sinu brauseris.

Mis see tööriist on?

URL-i kodeerimine (protsentkodeering) asendab URL-is keelatud märgid protsendimärgiga, millele järgneb märgi baidiväärtus kuueteistkümnendsüsteemis — tühikust saab %20 ja märgist 你 saab %E4%BD%A0. Ilma selleta lõhuksid tühikud, &, ? ja mitte-ASCII tekst URL-i struktuuri või tõlgendaks server neid valesti.

Levinud on kaks vajadust ja see tööriist toetab mõlemat: väärtuse kodeerimine, mis läheb päringuparameetri sisse (komponendirežiim — kodeerib ka / ? & = märgid), ning terve URL-i kodeerimine, säilitades selle struktuuri (täisURL-i režiim — jätab :// ? & puutumata).

Üks huvitav ajalooline iseärasus: URL-i standardi (RFC 3986) järgi on tühik õigesti %20, kuid HTML-vormide esitamisel on tühikut traditsiooniliselt kodeeritud plussmärgina — seetõttu näedki looduses nii q=hello%20world kui ka q=hello+world ning vormiandmete dekodeerimisel tuleb + sageli eraldi käsitleda.

Miks seda kasutada?

  • Ehita päringustringe turvaliselt — kasutaja sisestus märkidega &, = või tühikutega ei lõhu su URL-i.
  • Dekodeeri pikad kodeeritud URL-id logidest, analüütikast või ümbersuunamistest, et näha, mida need tegelikult tähendavad.
  • Korrektne UTF-8 käsitlus hiina keele, emotikonide ja muu mitte-ASCII teksti jaoks.
  • Kaks režiimi, et sa kogemata ei kodeeriks terve URL-i : ja / märke.
  • Tasuta, kohene, midagi ei laadita üles.

Kuidas kasutada

  1. Kleebi oma tekst või URL sisestusväljale.
  2. Vali režiim: "Komponent" päringuparameetrisse minevate väärtuste jaoks, "Täis-URL" tervete URL-ide jaoks.
  3. Klõpsa "Kodeeri" või "Dekodeeri".
  4. Kopeeri tulemus.

Näide

Sisend

https://example.com/search?q=hello world & 你好

Tulemus

Komponendirežiim: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Täis-URL režiim:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

Komponendirežiim kodeerib ka struktuurimärgid; täis-URL režiim säilitab need.

Levinud kasutusjuhud

  • Jagatava URL-i loomine, kus otsingusõna või filtri väärtus tuleb kasutaja sisestusest ja võib sisaldada tühikuid, & märki või muid erimärke.
  • Pika jälgimis- või ümbersuunamis-URL-i dekodeerimine e-kirjast või reklaamkampaaniast, et näha tegelikku sihtkohta ja parameetreid enne klõpsamist.
  • Selle vea otsimine, miks server ei loe päringuparameetrit õigesti — sageli on süüdi reserveeritud märk, mis oleks pidanud olema kodeeritud, aga ei olnud.
  • Mitte-inglise keele (hiina, jaapani, araabia jne) väärtuse ettevalmistamine URL-i päringustringi jaoks.

encodeURIComponent vs encodeURI praktikas

Need vastavad otseselt tööriista kahele režiimile ja päris JavaScripti funktsioonidele, mida arendajad juba tunnevad: encodeURIComponent (komponendirežiim) kodeerib kõik peale väikese kogumi kodeerimata märkide, mistõttu see sobib turvaliselt igale üksikule väärtusele, mis lisatakse URL-i — seda kasutad päringuparameetri, tee osa või hash-fragmendi väärtuse jaoks. encodeURI (täisURL-i režiim) jätab URL-i struktuurimärgid (:, /, ?, #, &, =) puutumata, sest eeldab, et kodeerid tervet, juba struktureeritud URL-i, mitte toorväärtust — selle kasutamine ühe parameetri väärtuse peal jätaks kodeerimata & või = märgid, mida see väärtus võib sisaldada, ja see ongi kõige levinum viga vale režiimi valimisel.

Reserveeritud ja reserveerimata märgid

URL-i spetsifikatsioon (RFC 3986) jagab märgid kahte rühma: reserveerimata märgid (tähed, numbrid, - _ . ~) on alati turvalised ja neid ei kodeerita kunagi, samas kui reserveeritud märkidel (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) on URL-i struktuuris eriline tähendus ning need vajavad kodeerimist ainult siis, kui need esinevad andmetena, mitte struktuurse kirjavahemärgina. Just seetõttu need kaks režiimi eksisteerivadki — komponendirežiim kohtleb reserveeritud märke kaitstavate andmetena, täisURL-i režiim aga säilitatava struktuurina. Selle vahe mõistmine on kasulikum kui pähe õppida, millal mida kasutada, sest see selgitab, miks sama märk (nt &) on mõnikord kodeeritud ja mõnikord mitte, olenevalt sellest, mis rolli see konkreetses URL-is mängib.

Korduma kippuvad küsimused

Millal kasutada komponendirežiimi ja millal täisURL-i režiimi?

Komponendirežiimi (encodeURIComponent) kasuta ühe väärtuse kodeerimiseks, mis läheb päringuparameetri sisse — see kodeerib ka /, ?, & ja =, et need URL-i ei lõhuks. Täis-URL režiimi (encodeURI) kasuta terve URL-i kodeerimiseks — see säilitab struktuurimärgid, et URL jääks toimivaks.

Miks ilmus tühiku asemel %20, mitte +?

Mõlemad on eri kontekstides kehtivad. %20 on tühiku universaalne protsentkodeering; + tähendab tühikut ainult päringustringides, kus kasutatakse vanemat application/x-www-form-urlencoded vormingut. See tööriist kasutab %20, mis töötab kõikjal.

Miks dekodeerimine annab vea?

Sisend sisaldab vigast protsentjada, näiteks % ilma kahe järgneva kuueteistkümnendmärgita. See juhtub tihti, kui URL katkes pooleli või dekodeeriti kaks korda. Paranda või eemalda katkine % jada.

Mis on topeltkodeerimine?

Juba kodeeritud teksti kodeerimine: %20-st saab %2520, sest % ise kodeeritakse %25-ks. See on levinud viga — kui dekodeeritud tulemus sisaldab endiselt % koode, dekodeeri veel üks kord.

Kas see töötab hiina märkide ja emotikonidega?

Jah. Tekst kodeeritakse UTF-8 baitidena, nii et 你好 muutub kujuks %E4%BD%A0%E5%A5%BD ja dekodeerub täpselt tagasi — samamoodi nagu brauserid seda teevad.

Seotud tööriistad