URL Encoder dhe Decoder

Acrafto Team Zhvilluesit
Përditësuar
Kodo si

Për një vlerë query ose një segment shtegu. Kodon gjithçka përveç shkronjave, shifrave dhe - _ . ! ~ * ' ( ), njëlloj si encodeURIComponent.

Rezultati

Gjithçka punon në shfletuesin tuaj dhe asgjë që ngjitni nuk ngarkohet. Kjo ka rëndësi, sepse URL-të shpesh mbartin tokenë dhe ID sesionesh.

URL encode dhe decode të tekstit online ndërsa shkruani: mjeti i kthen hapësirat, shkronjat me diakritikë dhe simbole si & ose ? në sekuenca të koduara me përqindje, si %20, dhe i kthen përsëri në tekst të lexueshëm. Skeda e dytë është një analizues URL. Ai e ndan çdo adresë në protokoll, host, shteg dhe parametra query që mund t’i ndryshoni, t’i çaktivizoni ose t’i pastroni nga etiketat e gjurmimit, dhe e shkruan përsëri URL-në të koduar saktë. Gjithçka ndodh në shfletuesin tuaj.

Si të bëni URL encode dhe decode të tekstit

  1. Shkruani ose ngjitni në fushën e skedës Kodo / Dekodo. Rezultati përditësohet me çdo shkronjë.
  2. Zgjidhni Drejtimi. Kodo e bën tekstin të sigurt për një URL, Dekodo e kthen caf%C3%A9%20au%20lait në café au lait. Nëse ngjitni në fushën e zbrazët tekst me sekuenca si %20, mjeti kalon vetë te Dekodo (Kodoje në vend të kësaj kthen mbrapsht). Teksti i thjeshtë që duhet koduar, i ngjitur në mënyrën Dekodo, e kalon te Kodo në të njëjtën mënyrë, me Dekodoje në vend të kësaj.
  3. Kur kodoni, zgjidhni te Kodo si çfarë është teksti (shihni pjesën tjetër). Opsioni i parazgjedhur, Vlerë parametri, është i duhuri për një vlerë të vetme query.
  4. Kopjo e vendos rezultatin në clipboard. Shkëmbe e kalon rezultatin te hyrja dhe ndërron drejtimin. Kjo është një provë e shpejtë e ciklit të plotë: dekodimi i asaj që sapo kodoni duhet t’ju kthejë tekstin origjinal.

Çdo shenjë që mjeti e ka ndryshuar theksohet në rezultat. Kaloni miun mbi të për të parë shenjën, pikën e saj kodike Unicode dhe bajtet, për shembull é U+00E9 %C3%A9. Poshtë fushave shihni numrin e Shenja, Bajte UTF-8 dhe Shenja të koduara (ose Shenja të dekoduara). Provo një shembull ngarkon fjalinë Çmimi: 50 % zbritje, çaj & qumësht? Po!, e cila ka 39 shenja por 42 bajte UTF-8, sepse çdo shkronjë latine me diakritikë (Ç, ç dhe ë) zë dy bajte.

Kur kodoni, Çdo rresht veç e veç kodon çdo rresht më vete dhe i ruan ndarjet e rreshtave, gjë që i shkon një liste vlerash ose lidhjesh. Pa të, edhe ndarja e rreshtit kodohet dhe bëhet %0A. Kur teksti është një URL me parametra, mjeti ofron Ndaje në pjesë, që e hap adresën te skeda e analizuesit.

URL encode për një parametër, një URL të plotë ose të dhëna formulari

Jo çdo shenjë duhet koduar kudo. Një vizë e pjerrët ndan dosjet në një shteg, por brenda vlerës së një parametri është thjesht e dhënë, prandaj rezultati i duhur varet nga ajo që kodoni. Kodo si ofron katër mënyra:

  • Vlerë parametri punon si encodeURIComponent i JavaScript dhe i shkon një vlere query ose një segmenti shtegu. Kodon gjithçka përveç shkronjave, shifrave dhe - _ . ! ~ * ' ( ), prandaj një &, =, / ose ? brenda vlerës nuk mund ta prishë URL-në. Kodimi i café & crème jep caf%C3%A9%20%26%20cr%C3%A8me, gati për t’u vendosur pas q=.
  • URL i plotë është për një adresë të kompletuar që duhet vetëm pastruar. Kodon hapësirat, shenjat jo-ASCII, shenjat e kontrollit, apostrofin e kundërt dhe " < > \ ^ { | }, dhe ruan gjithçka që i jep një URL-je strukturën: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Kështu https://example.com/search?q=café au lait&lang=fr bëhet https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Sekuencat që janë koduar tashmë mbeten siç janë, dhe një % i vetmuar bëhet %25. Këtu ndryshon nga encodeURI i JavaScript, që e kthen një %20 ekzistues në %2520 dhe kodon kllapat katrore të një adrese IPv6 si http://[2001:db8::1]:8080/.
  • Të dhëna formulari ndjek formatin application/x-www-form-urlencoded (në anglisht), që e prodhojnë formularët HTML dhe URLSearchParams. Hapësira bëhet +, dhe vetëm shkronjat, shifrat dhe * - . _ mbeten të pakoduara, prandaj ! ' ( ) ~ kodohen gjithashtu.
  • RFC 3986 strikt lë të pakoduara vetëm shenjat e lira të RFC 3986 (në anglisht): shkronjat, shifrat dhe - . _ ~. OAuth 1.0 (RFC 5849) dhe AWS Signature Version 4 kërkojnë pikërisht këtë formë, sepse një nënshkrim përputhet vetëm kur të dyja anët e kodojnë ! ose * njëlloj.

Të njëjtat shenja në secilën mënyrë:

ShenjaVlerë parametriURL i plotëTë dhëna formulariRFC 3986 strikt
hapësirë%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Teksti kodohet gjithmonë si UTF-8 dhe shifrat heksadecimale janë gjithmonë shkronja të mëdha. Nëse hyrja përmban tashmë sekuenca si %20, një shënim e thotë këtë dhe ofron Dekodoje në vend të kësaj, që të mos e kodoni tekstin dy herë gabimisht.

Për ta kaluar JSON në një parametër query, minifikojeni te JSON formatter dhe kodojeni si Vlerë parametri: {"id":7,"tags":["a","b"]} bëhet %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Punon edhe anasjelltas: dekodoni parametrin këtu, pastaj formatojeni atje.

Probleme me URL decode: shenjat plus, %2520 dhe sekuenca të prishura

Dekodimi zakonisht punon pa probleme, por katër situata ngatërrojnë njerëzit. Mjeti i trajton secilën prej tyre në vend që të ndalojë me gabim:

  • Një shenjë plus përfaqëson një hapësirë në të dhënat e formularit dhe në shumicën e vargjeve query. Dekodo + si hapësirë është e aktivizuar si parazgjedhje, prandaj caf%C3%A9+au+lait dekodohet në café au lait. Në një URL të plotë vetëm pluset pas ? llogariten si hapësira, sepse në një shteg plusi është shenjë e zakonshme. Çaktivizojeni opsionin kur plusi ka kuptim fjalë për fjalë. Një plus i koduar si %2B mbetet gjithmonë plus.
  • Kodimi i dyfishtë ndodh kur dy shtresa kodi e kodojnë secila të njëjtën vlerë, gjë për të cilën RFC 3986 paralajmëron shprehimisht. Çdo % bëhet %25, prandaj një hapësirë kalon nga %20 në %2520. Nëse rezultati i dekoduar përmban ende sekuenca si %20, mjeti thotë se teksti ka gjasa të jetë koduar dy herë dhe ofron Dekodo përsëri.
  • Një sekuencë e pavlefshme, një % që nuk ndiqet nga dy shifra heksadecimale si te 100% ose %G1, e bën decodeURIComponent të JavaScript të ngrejë një URIError. Këtu sekuenca të tilla lihen siç janë, shënohen me të kuqe dhe numërohen, ndërsa pjesa tjetër e tekstit dekodohet.
  • Lidhjet e vjetra Latin-1 vijnë nga koha para UTF-8, kur disa faqe e kodonin é si bajtin e vetëm %E9. caf%E9 nuk është UTF-8 i vlefshëm, prandaj decodeURIComponent dështon dhe unquote i Python kthen caf e ndjekur nga shenja zëvendësuese U+FFFD. Mjeti i lexon këto bajte si Windows-1252, e dekodon caf%E9 në café dhe shton një shënim që e thotë këtë.

Shenjat e kontrollit në tekstin e dekoduar, si një tabulator ose një bajt zero, shfaqen si simbole të dukshme si ␉ dhe ␀, por Kopjo kopjon tekstin e vërtetë.

Analizues URL: ndani një URL dhe ndryshoni parametrat e query

Ngjitni një adresë te fusha URL e skedës Analizo dhe ndrysho URL dhe ajo ndahet në Protokolli, Hosti, Porta, Shtegu dhe Fragmenti, plus Emri i përdoruesit dhe Fjalëkalimi kur URL-ja i përmban. Vlerat shfaqen të dekoduara, prandaj kjo skedë është edhe mënyra më e shpejtë për të dekoduar parametrat e URL-së: lexoni këpucë vrapimi në vend të k%C3%ABpuc%C3%AB+vrapimi. Ndryshimi punon në të dy drejtimet, si shiriti i adresës dhe tabela e parametrave në Postman. Ndryshoni një fushë dhe URL-ja rishkruhet menjëherë, e koduar saktë; ndryshoni URL-në dhe të gjitha pjesët lexohen përsëri. Pjesët që nuk i prekni mbeten saktësisht siç ishin, shenjë për shenjë.

Tabela Parametrat e query liston çdo parametër me Emri dhe Vlera të tij. Hiqeni shenjën te Përfshije në URL për ta lënë një parametër jashtë pa e fshirë, gjë që ndihmon kur kërkoni parametrin që e prish një kërkesë. Shto parametër, Hiq parametrin dhe Rendit A deri Z bëjnë atë që thonë. Emrat e përsëritur si tag=a&tag=b dhe emrat pa vlerë si ?debug ruhen. Hapësirat në parametra vendos nëse hapësirat shkruhen si %20 ose +; si parazgjedhje ndjek URL-në që ngjitët.

Lidhjet e hyrjes dhe të pagesës shpesh mbartin një URL të dytë brenda një parametri, të koduar që ? dhe & e tij të mos përzihen me ato të jashtmet:

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

Një vlerë që është vetë URL, zakonisht te redirect_uri, return, url ose next, merr një buton Ndrysho URL-në brenda. Adresa e brendshme https://app.example.com/callback?tab=2 hapet si nivel më vete me pjesët dhe parametrat e saj, një shteg navigimi (URL kryesor › redirect_uri) të kthen mbrapsht, dhe çdo ndryshim kodohet përsëri te URL-ja e jashtme. Kopjo URL kryesor kopjon rezultatin. Kjo punon disa nivele në thellësi.

Kur pjesa pas # duket si parametra, si #access_token=...&state=... në rrjedhën implicite të OAuth ose #/search?q=shoes në rrugët e aplikacioneve me një faqe, një tabelë e dytë, Parametrat e fragmentit, i liston edhe ata.

Analizuesi tregon edhe probleme: një URL pa protokoll, që shfletuesit e trajtojnë si lidhje relative; një portë jashtë intervalit 0 deri 65535; dhe shenja që duhen koduar, si hapësirat, shkronjat me diakritikë, " ose <, që Kodoji i rregullon me një hap. Teksti pa adresë, si a=1&b=2, lexohet si varg query. Për një domen të ndërkombëtarizuar (në anglisht) mjeti tregon formën Punycode që përdorin DNS dhe shfletuesit, prandaj münchen.de bëhet xn--mnchen-3ya.de, dhe një domen që fillon me xn-- merr formën e tij të lexueshme.

Kopjo URL kopjon adresën e gatshme, Hap e hap në një skedë të re (vetëm lidhjet http dhe https), dhe Kopjo si JSON ju jep parametrat si objekt JSON, me emrat e përsëritur të mbledhur në një varg.

Si të hiqni UTM dhe parametra të tjerë gjurmimi nga një URL

Lidhjet nga buletinet, reklamat dhe rrjetet sociale mbartin parametra që i tregojnë faqes vetëm nga erdhi vizitori. Parametrat UTM (në anglisht) utm_source, utm_medium, utm_campaign, utm_term dhe utm_content e kanë origjinën te Urchin, paraardhësi i Google Analytics. ID-të e klikimit si fbclid (Facebook), gclid (Google Ads) dhe msclkid (Microsoft Advertising) shtohen nga vetë platformat.

Analizuesi i shënon këta me etiketën gjurmim, dhe Hiq gjurmimin (n) i fshin të gjithë njëherësh. Përveç çdo parametri utm_*, njeh më shumë se 20 të tjerë, si ttclid (TikTok), mc_cid (Mailchimp) dhe _hsenc (HubSpot). Parametrat që i duhen faqes mbeten në vend: te lidhja e dyqanit nga Provo një shembull, Hiq gjurmimin (4) heq utm_source, utm_medium, utm_campaign dhe fbclid dhe ruan q, size, return dhe fragmentin #reviews.

Një lidhje që do të futet në një kod QR ia vlen të pastrohet këtu më parë. Pa parametra gjurmimi është më e shkurtër, dhe një lidhje më e shkurtër jep kod më pak të dendur që skanohet më lehtë.

Çfarë është percent encoding dhe si bëhen shenjat %XX

Percent-encoding (në anglisht), që quhet edhe URL encoding, e shkruan një shenjë si % e ndjekur nga dy shifra heksadecimale. Një URL mund të përmbajë vetëm një bashkësi të kufizuar shenjash ASCII, dhe disa prej tyre kanë detyrë: ? e nis query-n, & ndan parametrat, # e nis fragmentin. RFC 3986 i quan këto shenja të rezervuara (: / ? # [ ] @ dhe ! $ & ' ( ) * + , ; =). Shkronjat, shifrat dhe - . _ ~ janë të lira dhe nuk kanë nevojë kurrë për kodim. Çdo gjë tjetër, dhe çdo shenjë e rezervuar e përdorur si e dhënë e thjeshtë, kodohet.

Shenjat jashtë ASCII kthehen së pari në bajte UTF-8, dhe çdo bajt merr %XX e vet:

  • é është U+00E9, që UTF-8 e ruan si dy bajtet C3 A9, prandaj bëhet %C3%A9.
  • € është U+20AC, tre bajte: %E2%82%AC.
  • Një emoji si U+1F600 (fytyrë që buzëqesh) zë katër bajte: %F0%9F%98%80.

%c3%a9 dhe %C3%A9 do të thonë njëlloj, por RFC 3986 rekomandon shkronja të mëdha, që është ajo që shkruan mjeti. Një tabelë e percent encoding për shenjat që hasni më shpesh:

ShenjaE koduarShenjaE koduar
hapësirë%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2Andarje rreshti%0A

URL encoding në JavaScript, Python dhe PHP

Çdo gjuhë ka funksione për këtë, dhe ato ndryshojnë kryesisht në mënyrën si i trajtojnë hapësirat, vizat e pjerrëta dhe ! ' ( ) * ~.

JavaScript ka encodeURIComponent (në anglisht) për një vlerë, encodeURI për një adresë të plotë dhe URLSearchParams për kodimin e formularëve:

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 nuk e kthen + në hapësirë, dhe ngre një URIError te një sekuencë e pavlefshme si 100%.

Në Python funksionet ndodhen te urllib.parse. quote e ruan / si parazgjedhje (safe='/') dhe përndryshe kodon gjithçka përveç shenjave të lira të RFC 3986. quote_plus i shkruan hapësirat si + dhe kodon edhe /:

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'

Në PHP, urlencode kodon si një formular HTML dhe e shkruan hapësirën si +, ndërsa rawurlencode ndjek RFC 3986 dhe shkruan %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 jep të njëjtin rezultat si RFC 3986 strikt. urlencode përputhet me Të dhëna formulari përveç *, që e kodon si %2A.

Pyetje të shpeshta

Hapësira duhet koduar si %20 apo +?

%20 punon kudo në një URL. Një + do të thotë hapësirë vetëm në vargun query dhe në të dhënat e formularit, formatin që dërgojnë formularët HTML. Në një shteg, + është shenjë plus e zakonshme, prandaj /a+b mbetet /a+b. Kur një vlerë query ka nevojë për plus të vërtetë, shkruajeni si %2B. Në mjet, Të dhëna formulari i shkruan hapësirat si + dhe tri mënyrat e tjera si %20.

Çfarë do të thonë %20, %2F dhe %3D në një URL?

Janë shenja të koduara: %20 është hapësirë, %2F vizë e pjerrët dhe %3D shenja e barazimit. Të tjera që shihni shpesh janë %26 (&), %3F (?), %3A (:), %2C (presje) dhe %27 (apostrof). Dy shifrat janë kodi i shenjës në heksadecimal. Shkronjat me diakritikë dhe shenjat e tjera jo-ASCII zënë dy deri në katër çifte të tilla, si %C3%A9 për é. Ngjitni vargun e plotë te dekoduesi për ta lexuar.

Cili është ndryshimi mes encodeURI dhe encodeURIComponent?

encodeURI është menduar për një adresë të plotë dhe i lë të paprekura shenjat që e strukturojnë, si : / ? # & =. encodeURIComponent është menduar për një pjesë, një vlerë parametri ose një segment shtegu, dhe i kodon edhe ato shenja, prandaj https://example.com/?a=1&b=2 bëhet https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. Në këtë mjet, Vlerë parametri përputhet me encodeURIComponent, dhe URL i plotë është si encodeURI por i ruan sekuencat ekzistuese si %20 në vend që t'i kthejë në %2520.

Si t'i heq parametrat UTM nga një URL?

Ngjitni lidhjen te skeda Analizo dhe ndrysho URL dhe shtypni Hiq gjurmimin (n). Ai i fshin njëherësh të gjitha etiketat utm_* dhe ID-të e klikimit si fbclid dhe gclid. Pastaj shtypni Kopjo URL. Për të hequr vetëm disa prej tyre, përdorni Hiq parametrin te rreshtat që nuk i doni.

A është URL encoding e njëjtë me enkriptimin ose Base64?

Jo. URL encoding nuk fsheh asgjë: kushdo mund ta dekodojë caf%C3%A9 përsëri në café, prandaj nuk mbron kurrë një fjalëkalim ose një token. Ai vetëm i bën shenjat të sigurta për t'u përdorur në një adresë. Base64 është kodim tjetër që çdo të dhënë, edhe skedarët binarë, e kthen në varg me 64 shenja. Një varg Base64 në një URL ka ende nevojë që +, / dhe = të kodohen, përveç nëse përdorni variantin URL-safe, që e prodhon koduesi dhe dekoduesi Base64.

A ngarkohen ose ruhen URL-të që ngjis?

Jo. Kodimi, dekodimi dhe analizimi punojnë në shfletuesin tuaj, dhe asgjë që ngjitni nuk dërgohet në server. Kjo ka rëndësi, sepse URL-të shpesh mbartin tokenë aksesi, ID sesionesh ose kode për rivendosjen e fjalëkalimit. Shfletuesi kujton vetëm skedën dhe opsionet që zgjodhët, kurrë tekstet. E vetmja gjë që ngarkon adresën është Hap, që e hap në një skedë të re njëlloj si klikimi i lidhjes.

Më shumë mjete për programuesit ka në kategorinë Zhvilluesit, dhe mjetet që e kthejnë një format në tjetrin janë mbledhur te Konvertuesit. Për të gjetur çfarë ndryshon mes dy URL-ve të gjata, për shembull një thirrje API që punon dhe një që dështon, ngjitini te mjeti i krahasimit të teksteve dhe krahasoni sipas shenjave.

Do të vlerësoja nëse mund t'i ndani këto faqe me miqtë, t'i ruani në faqerojtës ose t'i lidhni. Faleminderit! 🙏