URL koduotuvas ir dekoduotuvas

Acrafto Team Kūrėjai
Atnaujinta
Koduoti kaip

Vienai užklausos reikšmei arba kelio daliai. Užkoduoja viską, išskyrus raides, skaitmenis ir - _ . ! ~ * ' ( ), kaip encodeURIComponent.

Rezultatas

Viskas vyksta jūsų naršyklėje ir nieko, ką įklijuojate, nesiunčiame į serverį. Tai svarbu, nes URL dažnai turi prieigos raktų ir sesijų ID.

URL koduotuvas ir dekoduotuvas internetu atnaujina rezultatą, kai tik rašote: įrankis paverčia tarpus, raides su diakritikais ir simbolius, tokius kaip & ar ?, procentais užkoduotomis sekomis, pavyzdžiui, %20, ir sugrąžina jas į skaitomą tekstą. Antrasis skirtukas yra URL analizatorius. Jis išskaido bet kurį adresą į protokolą, hostą, kelią ir užklausos parametrus, kuriuos galite redaguoti, išjungti ar išvalyti nuo sekimo žymų, o teisingai užkoduotą URL įrašo atgal. Viskas vyksta jūsų naršyklėje.

Kaip užkoduoti ir dekoduoti URL tekstą

  1. Įveskite arba įklijuokite tekstą į lauką skirtuke Koduoti / dekoduoti. Rezultatas atsinaujina po kiekvieno paspaudimo.
  2. Pasirinkite Kryptis. Koduoti padaro tekstą saugų URL, Dekoduoti paverčia caf%C3%A9%20au%20lait atgal į café au lait. Įklijuokite tekstą su sekomis, tokiomis kaip %20, į tuščią lauką ir įrankis pats persijungs į Dekoduoti (Verčiau koduoti grąžina atgal). Paprastą tekstą, kurį reikia užkoduoti, įklijavus Dekoduoti režimu, įrankis taip pat persijungia į Koduoti, o pasiūlo Verčiau dekoduoti.
  3. Koduodami pasirinkite pagal Koduoti kaip, koks tai tekstas (žr. kitą skyrių). Numatytoji Parametro reikšmė tinka vienai užklausos reikšmei.
  4. Kopijuoti įrašo rezultatą į iškarpinę. Sukeisti perkelia rezultatą į įvestį ir pakeičia kryptį. Taip greitai patikrinsite abi kryptis: ką tik užkoduotą tekstą dekodavus, turi grįžti pradinis tekstas.

Kiekvienas įrankio pakeistas simbolis rezultate paryškinamas. Užveskite žymeklį ir pamatysite simbolį, jo Unicode kodą ir baitus, pavyzdžiui, é U+00E9 %C3%A9. Po laukais matote skaičius Simboliai, UTF-8 baitai ir Užkoduoti simboliai (arba Dekoduoti simboliai) skaičių. Išbandyti pavyzdį įkelia sakinį Kaina: 50 % nuolaida, šokoladas & česnakai? Taip!, kuriame yra 49 simboliai, bet 51 UTF-8 baitas, nes kiekviena raidė su diakritiku (š ir č) užima du baitus.

Su parinktimi Kiekviena eilutė atskirai kiekviena eilutė koduojama atskirai, o eilučių lūžiai lieka, tai tinka reikšmių ar nuorodų sąrašui. Be šios parinkties eilutės lūžis taip pat užkoduojamas ir tampa %0A. Kai tekstas yra URL su parametrais, įrankis pasiūlo Išskaidyti į dalis, kuris atidaro adresą analizatoriaus skirtuke.

Kaip užkoduoti URL parametrą, visą URL ar formos duomenis

Ne kiekvieną simbolį reikia koduoti visur. Pasvirasis brūkšnys kelyje skiria aplankus, o parametro reikšmėje yra tiesiog duomenų simbolis, todėl teisingas rezultatas priklauso nuo to, ką koduojate. Koduoti kaip siūlo keturis režimus:

  • Parametro reikšmė veikia kaip JavaScript encodeURIComponent ir tinka vienai užklausos reikšmei ar kelio daliai. Ji užkoduoja viską, išskyrus raides, skaitmenis ir - _ . ! ~ * ' ( ), todėl &, =, / ar ? reikšmės viduje neišardys URL. Užkodavus café & crème gaunama caf%C3%A9%20%26%20cr%C3%A8me, tinka įrašyti po q=.
  • Visas URL skirtas pilnam adresui, kurį tereikia sutvarkyti. Jis užkoduoja tarpus, ne ASCII simbolius, valdymo simbolius, atvirkštinę kabutę ir " < > \ ^ { | }, o palieka viską, kas suteikia URL struktūrą: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Taigi https://example.com/search?q=café au lait&lang=fr tampa https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Jau užkoduotos sekos lieka kaip yra, o pavienis % tampa %25. Čia jis skiriasi nuo JavaScript encodeURI, kuri esamą %20 paverčia %2520 ir užkoduoja IPv6 adreso skliaustus, pavyzdžiui, http://[2001:db8::1]:8080/.
  • Formos duomenys atitinka formatą application/x-www-form-urlencoded (anglų kalba), kurį sukuria HTML formos ir URLSearchParams. Tarpas tampa +, o neužkoduoti lieka tik raidės, skaitmenys ir * - . _, todėl ! ' ( ) ~ taip pat užkoduojami.
  • Griežtas RFC 3986 palieka neužkoduotus tik RFC 3986 (anglų kalba) nerezervuotus simbolius: raides, skaitmenis ir - . _ ~. Tiksliai tokios formos reikalauja OAuth 1.0 (RFC 5849) ir AWS Signature Version 4, nes parašas sutampa tik tada, kai abi pusės ! ar * užkoduoja vienodai.

Tie patys simboliai kiekviename režime:

SimbolisParametro reikšmėVisas URLFormos duomenysGriežtas RFC 3986
tarpas%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Tekstas visada koduojamas UTF-8, o šešioliktainiai skaitmenys visada rašomi didžiosiomis raidėmis. Jei įvestyje jau yra sekų, tokių kaip %20, pastaba apie tai praneša ir pasiūlo Verčiau dekoduoti, kad netyčia neužkoduotumėte teksto du kartus.

Norėdami perduoti JSON užklausos parametre, sumažinkite jį JSON formatavimo įrankyje ir užkoduokite kaip Parametro reikšmė: {"id":7,"tags":["a","b"]} tampa %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Veikia ir atvirkščiai: parametrą dekoduokite čia, o suformatuokite ten.

URL dekodavimo problemos: pliusai, %2520 ir sugadintos sekos

Dekodavimas dažniausiai tiesiog veikia, tačiau keturios situacijos painioja žmones. Įrankis tvarkosi su kiekviena iš jų, užuot sustojęs su klaida:

  • Pliuso ženklas žymi tarpą formos duomenyse ir daugumoje užklausos eilučių. Dekoduoti + kaip tarpą įjungta pagal numatytuosius nustatymus, todėl caf%C3%A9+au+lait dekoduojama į café au lait. Visame URL tarpais laikomi tik pliusai po ?, nes kelyje pliusas yra įprastas simbolis. Išjunkite parinktį, kai pliusas turi likti pliusu. Pliusas, užkoduotas kaip %2B, visada lieka pliusu.
  • Dvigubas kodavimas įvyksta, kai du kodo sluoksniai užkoduoja tą pačią reikšmę, nuo ko RFC 3986 aiškiai įspėja. Kiekvienas % tampa %25, todėl tarpas iš %20 virsta %2520. Jei dekoduotame rezultate vis dar yra sekų, tokių kaip %20, įrankis praneša, kad tekstas tikriausiai buvo užkoduotas du kartus, ir pasiūlo Dekoduoti dar kartą.
  • Neteisinga seka, tai yra %, po kurio nėra dviejų šešioliktainių skaitmenų, kaip 100% ar %G1, priverčia JavaScript decodeURIComponent išmesti URIError. Čia tokios sekos paliekamos kaip yra, pažymimos raudonai ir suskaičiuojamos, o likęs tekstas dekoduojamas.
  • Senos Latin-1 nuorodos atsirado dar prieš UTF-8 laikus, kai kai kurios svetainės é koduodavo vienu baitu %E9. caf%E9 nėra tinkamas UTF-8, todėl decodeURIComponent nepavyksta, o Python unquote grąžina caf ir pakaitos simbolį U+FFFD. Įrankis tokius baitus nuskaito kaip Windows-1252, dekoduoja caf%E9 į café ir prideda tai paaiškinančią pastabą.

Valdymo simboliai dekoduotame tekste, pavyzdžiui, tabuliacija ar nulinis baitas, rodomi kaip matomi simboliai, tokie kaip ␉ ir ␀, tačiau Kopijuoti nukopijuoja tikrąjį tekstą.

URL analizatorius: išskaidykite URL ir redaguokite užklausos parametrus

Įklijuokite adresą į lauką URL skirtuke Analizuoti ir keisti URL ir jis išskaidomas į Protokolas, Hostas, Prievadas, Kelias ir Fragmentas, o jei URL turi, dar ir Naudotojo vardas bei Slaptažodis. Reikšmės rodomos dekoduotos, todėl šis skirtukas yra ir greičiausias būdas dekoduoti URL parametrus: matote bėgimo bateliai, o ne b%C4%97gimo+bateliai. Redaguoti galima abiem kryptimis, kaip naršyklės adreso juostoje ir parametrų lentelėje Postman programoje. Pakeiskite lauką ir URL perrašomas iš karto, teisingai užkoduotas; pakeiskite URL ir visos dalys nuskaitomos iš naujo. Dalys, kurių nelietėte, lieka tokios, kokios buvo, simbolis po simbolio.

Lentelėje Užklausos parametrai išvardyti visi parametrai su jų Pavadinimas ir Reikšmė. Nuimkite žymę Įtraukti į URL, kad parametras būtų praleistas jo neištrynus, o tai padeda ieškant parametro, kuris sugadina užklausą. Pridėti parametrą, Pašalinti parametrą ir Rikiuoti nuo A iki Ž daro tai, ką rodo jų pavadinimai. Pasikartojantys pavadinimai, pavyzdžiui, tag=a&tag=b, ir pavadinimai be reikšmės, pavyzdžiui, ?debug, išsaugomi. Tarpai parametruose nusprendžia, ar tarpai rašomi kaip %20, ar +; pagal numatytuosius nustatymus laikomasi įklijuoto URL.

Prisijungimo ir mokėjimo nuorodos dažnai savo parametre neša antrą URL, užkoduotą taip, kad jo paties ? ir & nesusimaišytų su išorinio URL ženklais:

https://auth.example.com/authorize?client_id=abc&redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Ftab%3D2

Reikšmė, kuri pati yra URL, dažniausiai redirect_uri, return, url ar next, gauna mygtuką Redaguoti įterptą URL. Vidinis adresas https://app.example.com/callback?tab=2 atsidaro kaip atskiras lygis su savo dalimis ir parametrais, naršymo kelias (Pagrindinis URL › redirect_uri) grąžina atgal, o kiekvienas pakeitimas užkoduojamas atgal į išorinį URL. Kopijuoti pagrindinį URL nukopijuoja rezultatą. Tai veikia ir keliais įterpimo lygiais.

Kai dalis po # atrodo kaip parametrai, pavyzdžiui, #access_token=...&state=... OAuth implicit srautuose arba #/search?q=shoes vieno puslapio programų maršrutuose, antra lentelė Fragmento parametrai išvardija ir juos.

Analizatorius taip pat nurodo problemas: URL be protokolo, kurį naršyklės laiko santykine nuoroda; prievadą už ribų nuo 0 iki 65535; ir simbolius, kuriuos privaloma užkoduoti, tokius kaip tarpai, raidės su diakritikais, " ar <, o Užkoduoti juos sutvarko vienu žingsniu. Tekstas be adreso, pavyzdžiui, a=1&b=2, nuskaitomas kaip užklausos eilutė. Tarptautinio domeno vardo (anglų kalba) atveju įrankis parodo Punycode formą, kurią naudoja DNS ir naršyklės, todėl münchen.de tampa xn--mnchen-3ya.de, o domenas, prasidedantis xn--, gauna skaitomą formą.

Kopijuoti URL nukopijuoja paruoštą adresą, Atidaryti atidaro jį naujame skirtuke (tik http ir https nuorodos), o Kopijuoti kaip JSON pateikia parametrus kaip JSON objektą, kuriame pasikartojantys pavadinimai surenkami į masyvą.

Kaip pašalinti UTM ir kitus sekimo parametrus iš URL

Nuorodos iš naujienlaiškių, skelbimų ir socialinių tinklų neša parametrus, kurie svetainei tik pasako, iš kur atėjo lankytojas. UTM parametrai (anglų kalba) utm_source, utm_medium, utm_campaign, utm_term ir utm_content kilo iš Urchin, Google Analytics pirmtako. Paspaudimų ID, tokius kaip fbclid (Facebook), gclid (Google Ads) ir msclkid (Microsoft Advertising), prideda pačios platformos.

Analizatorius juos pažymi žyme sekimas, o Pašalinti sekimą (n) ištrina juos visus iš karto. Be bet kurio utm_* parametro, jis atpažįsta dar daugiau nei 20 kitų, pavyzdžiui, ttclid (TikTok), mc_cid (Mailchimp) ir _hsenc (HubSpot). Parametrai, kurių reikia puslapiui, lieka vietoje: parduotuvės nuorodoje iš Išbandyti pavyzdį Pašalinti sekimą (4) pašalina utm_source, utm_medium, utm_campaign ir fbclid, o palieka q, size, return ir fragmentą #reviews.

Nuorodą, kuri keliaus į QR kodą, verta pirmiausia išvalyti čia. Be sekimo parametrų ji trumpesnė, o trumpesnė nuoroda sukuria mažiau tankų kodą, kurį lengviau nuskaityti.

Kas yra procentinis kodavimas ir kaip simboliai tampa %XX

Procentinis kodavimas (anglų kalba), dar vadinamas URL kodavimu, užrašo simbolį kaip % su dviem šešioliktainiais skaitmenimis. URL gali turėti tik ribotą ASCII simbolių rinkinį, o kai kurie iš jų turi paskirtį: ? pradeda užklausą, & skiria parametrus, # pradeda fragmentą. RFC 3986 juos vadina rezervuotais simboliais (: / ? # [ ] @ ir ! $ & ' ( ) * + , ; =). Raidės, skaitmenys ir - . _ ~ yra nerezervuoti ir jų niekada nereikia koduoti. Viskas kita, taip pat kiekvienas rezervuotas simbolis, naudojamas kaip paprasti duomenys, užkoduojama.

Ne ASCII simboliai pirmiausia paverčiami UTF-8 baitais, ir kiekvienas baitas gauna savo %XX:

  • é yra U+00E9, kurį UTF-8 saugo kaip du baitus C3 A9, todėl jis tampa %C3%A9.
  • € yra U+20AC, trys baitai: %E2%82%AC.
  • Jaustukas, pavyzdžiui, U+1F600 (besišypsantis veidas), užima keturis baitus: %F0%9F%98%80.

%c3%a9 ir %C3%A9 reiškia tą patį, bet RFC 3986 rekomenduoja didžiąsias raides, kaip ir rašo įrankis. Dažniausiai sutinkamų simbolių procentinio kodavimo lentelė:

SimbolisUžkoduotaSimbolisUžkoduota
tarpas%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2Aeilutės lūžis%0A

URL kodavimas JavaScript, Python ir PHP kalbomis

Kiekviena kalba turi tam skirtas funkcijas, ir jos skiriasi daugiausia tuo, kaip elgiasi su tarpais, pasvirais brūkšniais ir ! ' ( ) * ~.

JavaScript turi encodeURIComponent (anglų kalba) reikšmei, encodeURI visam adresui ir URLSearchParams formos kodavimui:

encodeURIComponent("café & crème")                     // "caf%C3%A9%20%26%20cr%C3%A8me"
encodeURI("https://example.com/a b?q=café")            // "https://example.com/a%20b?q=caf%C3%A9"
new URLSearchParams({ q: "café & crème" }).toString()  // "q=caf%C3%A9+%26+cr%C3%A8me"
decodeURIComponent("caf%C3%A9")                        // "café"

decodeURIComponent nepaverčia + tarpu ir išmeta URIError esant neteisingai sekai, pavyzdžiui, 100%.

Python funkcijos yra modulyje urllib.parse. quote pagal numatytuosius nustatymus palieka / (safe='/') ir kitaip užkoduoja viską, išskyrus RFC 3986 nerezervuotus simbolius. quote_plus tarpus rašo kaip + ir užkoduoja ir /:

from urllib.parse import quote, quote_plus, urlencode, unquote_plus

quote("café & crème/brûlée")       # 'caf%C3%A9%20%26%20cr%C3%A8me/br%C3%BBl%C3%A9e'
quote("a b/c", safe="")            # 'a%20b%2Fc'
quote_plus("café & crème/brûlée")  # 'caf%C3%A9+%26+cr%C3%A8me%2Fbr%C3%BBl%C3%A9e'
urlencode({"q": "café & crème", "page": 2})  # 'q=caf%C3%A9+%26+cr%C3%A8me&page=2'
unquote_plus("caf%C3%A9+au+lait")  # 'café au lait'

PHP urlencode koduoja kaip HTML forma ir tarpą rašo kaip +, o rawurlencode laikosi RFC 3986 ir rašo %20:

urlencode("café & crème");     // "caf%C3%A9+%26+cr%C3%A8me"
rawurlencode("café & crème");  // "caf%C3%A9%20%26%20cr%C3%A8me"

rawurlencode duoda tą patį rezultatą kaip Griežtas RFC 3986. urlencode atitinka Formos duomenys, išskyrus *, kurį užkoduoja kaip %2A.

Dažniausiai užduodami klausimai

Ar tarpą koduoti kaip %20, ar +?

%20 veikia visur URL. + reiškia tarpą tik užklausos eilutėje ir formos duomenyse, tai yra formatu, kurį siunčia HTML formos. Kelyje + yra paprastas pliuso ženklas, todėl /a+b lieka /a+b. Kai užklausos reikšmėje reikia tikro pliuso, rašykite %2B. Įrankyje Formos duomenys tarpus rašo kaip +, o kiti trys režimai kaip %20.

Ką reiškia %20, %2F ir %3D URL adrese?

Tai užkoduoti simboliai: %20 yra tarpas, %2F pasvirasis brūkšnys, o %3D lygybės ženklas. Kiti dažnai matomi yra %26 (&), %3F (?), %3A (:), %2C (kablelis) ir %27 (apostrofas). Du skaitmenys yra simbolio kodas šešioliktainėje sistemoje. Raidės su diakritikais ir kiti ne ASCII simboliai užima nuo dviejų iki keturių tokių porų, pavyzdžiui, %C3%A9 raidei é. Įklijuokite visą eilutę į dekoduotuvą ir perskaitykite ją.

Kuo skiriasi encodeURI ir encodeURIComponent?

encodeURI skirta visam adresui ir palieka jam struktūrą suteikiančius simbolius, tokius kaip : / ? # & =. encodeURIComponent skirta vienai daliai, parametro reikšmei ar kelio daliai, ir užkoduoja ir tuos simbolius, todėl https://example.com/?a=1&b=2 tampa https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. Šiame įrankyje Parametro reikšmė atitinka encodeURIComponent, o Visas URL panašus į encodeURI, bet palieka esamas sekas, tokias kaip %20, užuot paverstas jas %2520.

Kaip pašalinti UTM parametrus iš URL?

Įklijuokite nuorodą į skirtuką Analizuoti ir keisti URL ir paspauskite Pašalinti sekimą (n). Jis iš karto ištrina kiekvieną utm_* žymę ir paspaudimų ID, tokius kaip fbclid ir gclid. Tada paspauskite Kopijuoti URL. Norėdami pašalinti tik dalį jų, naudokite Pašalinti parametrą nepageidaujamose eilutėse.

Ar URL kodavimas yra tas pats, kas šifravimas ar Base64?

Ne. URL kodavimas nieko neslepia: bet kas gali caf%C3%A9 dekoduoti atgal į café, todėl jis niekada neapsaugo slaptažodžio ar prieigos rakto. Jis tik padaro simbolius saugius naudoti adrese. Base64 yra kitas kodavimas, kuris bet kokius duomenis, įskaitant dvejetainius failus, paverčia 64 simbolių eilute. Base64 eilutėje URL vis tiek reikia užkoduoti +, / ir =, nebent naudojate URL saugų variantą, kurį gali sukurti Base64 koduotuvas ir dekoduotuvas.

Ar įklijuoti URL siunčiami į serverį ar saugomi?

Ne. Kodavimas, dekodavimas ir analizė vyksta jūsų naršyklėje, o nieko, ką įklijuojate, nesiunčiame į serverį. Tai svarbu, nes URL dažnai neša prieigos raktus, sesijų ID ar slaptažodžio atkūrimo kodus. Naršyklė įsimena tik jūsų pasirinktą skirtuką ir parinktis, niekada tekstų. Vienintelis dalykas, kuris įkelia adresą, yra Atidaryti, kuris atidaro jį naujame skirtuke lygiai taip, kaip paspaudus nuorodą.

Daugiau įrankių programuotojams rasite kategorijoje Kūrėjai, o įrankiai, paverčiantys vieną formatą kitu, surinkti kategorijoje Keitikliai. Norėdami rasti, kuo skiriasi du ilgi URL, pavyzdžiui, veikianti ir neveikianti API užklausa, įklijuokite juos į teksto palyginimo įrankį ir lyginkite pagal simbolius.

Būčiau dėkingas, jei pasidalintumėte šiais puslapiais su draugais, išsaugotumėte juos žymėse ar nuorodą. Ačiū! 🙏