URL kodētājs un dekodētājs

Acrafto Team Izstrādātāji
Atjaunināts
Kodēt kā

Vienai vaicājuma vērtībai vai ceļa segmentam. Kodē visu, izņemot burtus, ciparus un - _ . ! ~ * ' ( ), tāpat kā encodeURIComponent.

Rezultāts

Viss notiek jūsu pārlūkā, un nekas no ielīmētā netiek augšupielādēts. Tas ir svarīgi, jo URL bieži satur pieejas marķierus un sesiju ID.

URL kodēšana un dekodēšana tiešsaistē jau rakstīšanas laikā: rīks pārvērš atstarpes, burtus ar diakritiskajām zīmēm un simbolus, piemēram, & vai ?, procentkodētās secībās, tādās kā %20, un pārvērš tās atpakaļ lasāmā tekstā. Otrā cilne ir URL analizators. Tas sadala jebkuru adresi protokolā, resursdatorā, ceļā un vaicājuma parametros, ko varat labot, izslēgt vai attīrīt no izsekošanas birkām, un ieraksta pareizi kodētu URL atpakaļ. Viss notiek jūsu pārlūkā.

Kā kodēt un dekodēt URL tekstu

  1. Ierakstiet vai ielīmējiet tekstu laukā cilnē Kodēt / dekodēt. Rezultāts atjaunojas ar katru taustiņa nospiedienu.
  2. Izvēlieties Virziens. Kodēt padara tekstu drošu lietošanai URL, Dekodēt pārvērš caf%C3%A9%20au%20lait atpakaļ par café au lait. Ja tukšajā laukā ielīmējat tekstu ar secībām, piemēram, %20, rīks pats pārslēdzas uz Dekodēt (ar Kodēt tā vietā varat pārslēgt atpakaļ). Ja režīmā Dekodēt ielīmējat parastu tekstu, kas jākodē, rīks tāpat pārslēdzas uz Kodēt, un parādās Dekodēt tā vietā.
  3. Kodējot, sadaļā Kodēt kā norādiet, kas ir šis teksts (skatiet nākamo sadaļu). Noklusējums Parametra vērtība ir piemērots vienai vaicājuma vērtībai.
  4. Kopēt ievieto rezultātu starpliktuvē. Apmainīt pārnes rezultātu uz ievades lauku un maina virzienu. Tā ir ātra pārbaude turp un atpakaļ: ja dekodējat tikko kodēto, jāsaņem atpakaļ oriģinālais teksts.

Katra rīka mainītā rakstzīme rezultātā ir izcelta. Novietojiet kursoru virs tās, lai redzētu rakstzīmi, tās Unicode koda punktu un baitus, piemēram, é U+00E9 %C3%A9. Zem laukiem redzams Rakstzīmes, UTF-8 baiti un Kodētās rakstzīmes (vai Dekodētās rakstzīmes) skaits. Izmēģināt piemēru ielādē teikumu Cena: 50 % atlaide, ķirši & āboli? Jā!, kurā ir 38 rakstzīmes, bet 42 UTF-8 baiti, jo katrs burts ar diakritisko zīmi (ķ, š, ā, ā) aizņem divus baitus.

Kodējot, Katra rinda atsevišķi kodē katru rindu atsevišķi un saglabā rindu pārtraukumus, kas der vērtību vai saišu sarakstam. Bez šīs opcijas rindas pārtraukums arī tiek kodēts un kļūst par %0A. Ja teksts ir URL ar parametriem, rīks piedāvā Sadalīt daļās, kas atver adresi analizatora cilnē.

URL parametra, visa URL vai veidlapas datu kodēšana

Ne katra rakstzīme visur ir jākodē. Slīpsvītra ceļā atdala mapes, bet parametra vērtībā tā ir parasta datu rakstzīme, tāpēc pareizais rezultāts ir atkarīgs no tā, ko kodējat. Kodēt kā piedāvā četrus režīmus:

  • Parametra vērtība darbojas kā JavaScript encodeURIComponent un der vienai vaicājuma vērtībai vai ceļa segmentam. Tā kodē visu, izņemot burtus, ciparus un - _ . ! ~ * ' ( ), tāpēc &, =, / vai ? vērtības iekšpusē nevar sabojāt URL. Kodējot café & crème, iegūstat caf%C3%A9%20%26%20cr%C3%A8me, gatavu ievietošanai aiz q=.
  • Pilns URL ir paredzēts pilnai adresei, kuru tikai jāsakārto. Tas kodē atstarpes, rakstzīmes ārpus ASCII, vadības rakstzīmes, atpakaļvērsto apostrofu un " < > \ ^ { | }, bet atstāj visu, kas veido URL struktūru: : / ? # [ ] @ ! $ & ' ( ) * + , ; =. Tāpēc https://example.com/search?q=café au lait&lang=fr kļūst par https://example.com/search?q=caf%C3%A9%20au%20lait&lang=fr. Jau iekodētās secības paliek negrozītas, un atsevišķs % kļūst par %25. Šajā ziņā rīks atšķiras no JavaScript encodeURI, kas esošo %20 pārvērš par %2520 un kodē IPv6 adreses iekavas, piemēram, http://[2001:db8::1]:8080/.
  • Veidlapas dati seko formātam application/x-www-form-urlencoded (angļu valodā), ko veido HTML veidlapas un URLSearchParams. Atstarpe kļūst par +, un nekodētas paliek tikai burti, cipari un * - . _, tāpēc ! ' ( ) ~ arī tiek kodēti.
  • Stingrs RFC 3986 atstāj nekodētas tikai RFC 3986 (angļu valodā) nerezervētās rakstzīmes: burtus, ciparus un - . _ ~. OAuth 1.0 (RFC 5849) un AWS Signature Version 4 prasa tieši šādu formu, jo paraksts sakrīt tikai tad, ja abas puses ! vai * kodē vienādi.

Tās pašas rakstzīmes katrā režīmā:

RakstzīmeParametra vērtībaPilns URLVeidlapas datiStingrs RFC 3986
atstarpe%20%20+%20
&%26&%26%26
/%2F/%2F%2F
+%2B+%2B%2B
~~~%7E~
!!!%21%21
****%2A
é%C3%A9%C3%A9%C3%A9%C3%A9

Teksts vienmēr tiek kodēts kā UTF-8, un heksadecimālie cipari vienmēr ir lielie burti. Ja ievadē jau ir secības, piemēram, %20, parādās paziņojums un piedāvājums Dekodēt tā vietā, lai jūs nejauši nekodētu tekstu divreiz.

Lai vaicājuma parametrā nodotu JSON, saspiediet to JSON formatētājā un validētājā un iekodējiet kā Parametra vērtība: {"id":7,"tags":["a","b"]} kļūst par %7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D. Tas darbojas arī pretējā virzienā: parametru dekodējiet šeit, pēc tam noformatējiet tur.

URL dekodēšanas problēmas: plusa zīmes, %2520 un bojātas secības

Dekodēšana parasti vienkārši darbojas, taču četras situācijas bieži sagādā grūtības. Rīks katru no tām apstrādā, nevis apstājas ar kļūdu:

  • Plusa zīme veidlapas datos un lielākajā daļā vaicājuma virkņu apzīmē atstarpi. Dekodēt + kā atstarpi ir ieslēgts pēc noklusējuma, tāpēc caf%C3%A9+au+lait tiek dekodēts par café au lait. Pilnā URL par atstarpēm tiek uzskatīti tikai plusi aiz ?, jo ceļā plusa zīme ir parasta rakstzīme. Izslēdziet opciju, ja plusa zīme domāta burtiski. Plusa zīme, kas iekodēta kā %2B, vienmēr paliek plusa zīme.
  • Dubultā kodēšana notiek, kad divi koda slāņi katrs iekodē vienu un to pašu vērtību, pret ko RFC 3986 skaidri brīdina. Katrs % kļūst par %25, tāpēc atstarpe no %20 pārvēršas par %2520. Ja dekodētajā rezultātā joprojām ir secības, piemēram, %20, rīks paziņo, ka teksts, iespējams, tika kodēts divreiz, un piedāvā Dekodēt vēlreiz.
  • Nederīga secība, %, kam neseko divi heksadecimāli cipari, kā 100% vai %G1, liek JavaScript decodeURIComponent izmest URIError. Šeit šādas secības tiek atstātas negrozītas, iezīmētas sarkanā krāsā un saskaitītas, bet pārējais teksts tiek dekodēts.
  • Vecās Latin-1 saites nāk no laikiem pirms UTF-8, kad dažas vietnes é kodēja kā vienu baitu %E9. caf%E9 nav derīgs UTF-8, tāpēc decodeURIComponent neizdodas, bet Python unquote atgriež caf ar aizstāšanas rakstzīmi U+FFFD. Rīks šādus baitus nolasa kā Windows-1252, dekodē caf%E9 par café un pievieno atbilstošu piezīmi.

Vadības rakstzīmes dekodētajā tekstā, piemēram, tabulācija vai nulles baits, tiek rādītas kā redzami simboli, piemēram, ␉ un ␀, taču Kopēt nokopē īsto tekstu.

URL analizators: URL sadalīšana un vaicājuma parametru labošana

Ielīmējiet adresi laukā URL cilnē Analizēt un labot URL, un tā tiek sadalīta daļās Protokols, Resursdators, Ports, Ceļš un Fragments, kā arī Lietotājvārds un Parole, ja URL tos satur. Vērtības tiek rādītas dekodētas, tāpēc šī cilne ir arī ātrākais veids, kā dekodēt URL parametrus: jūs lasāt skriešanas apavi nevis skrie%C5%A1anas+apavi. Labošana darbojas abos virzienos, tāpat kā pārlūka adreses josla un parametru tabula programmā Postman. Mainiet lauku, un URL tiek uzreiz pārrakstīts pareizi kodētā veidā; mainiet URL, un visas daļas tiek nolasītas no jauna. Daļas, kuras neaiztiekat, paliek tieši tādas, kādas bija, rakstzīmi pa rakstzīmei.

Tabula Vaicājuma parametri uzskaita katru parametru ar tā Nosaukums un Vērtība. Noņemiet atzīmi pie Iekļaut URL, lai parametru izlaistu, to neizdzēšot, kas noder, meklējot to parametru, kas sabojā pieprasījumu. Pievienot parametru, Noņemt parametru un Kārtot A līdz Z dara tieši to, ko norāda to nosaukumi. Atkārtoti nosaukumi, piemēram, tag=a&tag=b, un nosaukumi bez vērtības, piemēram, ?debug, tiek saglabāti. Atstarpes parametros nosaka, vai atstarpes tiek rakstītas kā %20 vai +; pēc noklusējuma tiek ievērots ielīmētais URL.

Pieteikšanās un maksājumu saites bieži satur otru URL parametra iekšpusē, kodētu tā, lai tā paša ? un & nesajauktos ar ārējiem:

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

Vērtībai, kas pati ir URL, parasti parametros redirect_uri, return, url vai next, parādās poga Labot iekšējo URL. Iekšējā adrese https://app.example.com/callback?tab=2 atveras kā savs līmenis ar savām daļām un parametriem, navigācijas ceļš (Galvenais URL › redirect_uri) ļauj atgriezties, un katra izmaiņa tiek iekodēta atpakaļ ārējā URL. Kopēt galveno URL nokopē rezultātu. Tas darbojas arī vairākos ligzdotos līmeņos.

Ja daļa aiz # izskatās pēc parametriem, kā #access_token=...&state=... OAuth netiešajā (implicit) plūsmā vai #/search?q=shoes vienas lapas lietotņu maršrutos, tos uzskaita arī otra tabula Fragmenta parametri.

Analizators norāda arī uz problēmām: URL bez protokola, ko pārlūki uzskata par relatīvu saiti; portu ārpus 0 līdz 65535; un rakstzīmes, kas jākodē, piemēram, atstarpes, burti ar diakritiskajām zīmēm, " vai <, ko Kodēt tās izlabo vienā soli. Teksts bez adreses, piemēram, a=1&b=2, tiek nolasīts kā vaicājuma virkne. Starptautiskam domēna vārdam rīks parāda Punycode formu, ko izmanto DNS un pārlūki, tāpēc münchen.de kļūst par xn--mnchen-3ya.de, bet domēnam, kas sākas ar xn--, tiek parādīta lasāmā forma.

Kopēt URL nokopē gatavo adresi, Atvērt atver to jaunā cilnē (tikai http un https saites), un Kopēt kā JSON sniedz parametrus kā JSON objektu, atkārtotos nosaukumus apkopojot masīvā.

UTM un citu izsekošanas parametru noņemšana no URL

Saites no jaunumu vēstulēm, reklāmām un sociālajiem tīkliem satur parametrus, kas vietnei tikai norāda, no kurienes apmeklētājs ieradies. UTM parametri (angļu valodā) utm_source, utm_medium, utm_campaign, utm_term un utm_content aizsākās ar Urchin, Google Analytics priekšgājēju. Klikšķu ID, piemēram, fbclid (Facebook), gclid (Google Ads) un msclkid (Microsoft Advertising), pievieno paši tīkli.

Analizators tos atzīmē ar birku izsekošana, un Noņemt izsekošanu (n) izdzēš tos visus uzreiz. Papildus jebkuram utm_* parametram tas atpazīst vēl vairāk nekā 20 citus, piemēram, ttclid (TikTok), mc_cid (Mailchimp) un _hsenc (HubSpot). Parametri, kas lapai vajadzīgi, paliek vietā: veikala saitē no Izmēģināt piemēru Noņemt izsekošanu (4) noņem utm_source, utm_medium, utm_campaign un fbclid, bet saglabā q, size, return un fragmentu #reviews.

Saiti, kas tiks ievietota QR kodā, ir vērts vispirms attīrīt šeit. Bez izsekošanas parametriem tā ir īsāka, un īsāka saite dod mazāk blīvu kodu, ko ir vieglāk noskenēt.

Kas ir procentkodēšana un kā rakstzīmes kļūst par %XX

Procentkodēšana (angļu valodā, Percent-encoding), ko dēvē arī par URL kodēšanu, raksta rakstzīmi kā %, kam seko divi heksadecimāli cipari. URL drīkst saturēt tikai ierobežotu ASCII rakstzīmju kopu, un dažām no tām ir sava funkcija: ? sāk vaicājumu, & atdala parametrus, # sāk fragmentu. RFC 3986 šīs sauc par rezervētajām rakstzīmēm (: / ? # [ ] @ un ! $ & ' ( ) * + , ; =). Burti, cipari un - . _ ~ ir nerezervētās rakstzīmes, un tos nekad nav jākodē. Viss pārējais, kā arī katra rezervētā rakstzīme, ko lieto kā parastus datus, tiek kodēts.

Rakstzīmes ārpus ASCII vispirms tiek pārvērstas UTF-8 baitos, un katrs baits saņem savu %XX:

  • é ir U+00E9, ko UTF-8 glabā kā diviem baitiem C3 A9, tāpēc tas kļūst par %C3%A9.
  • € ir U+20AC, trīs baiti: %E2%82%AC.
  • Emodži, piemēram, U+1F600 (smaidoša seja), aizņem četrus baitus: %F0%9F%98%80.

%c3%a9 un %C3%A9 nozīmē vienu un to pašu, taču RFC 3986 iesaka lielos burtus, ko rīks arī raksta. Procentkodēšanas tabula ar rakstzīmēm, kas sastopamas visbiežāk:

RakstzīmeKodētaRakstzīmeKodēta
atstarpe%20+%2B
!%21,%2C
"%22/%2F
#%23:%3A
$%24;%3B
%%25=%3D
&%26?%3F
'%27@%40
(%28[%5B
)%29]%5D
*%2Arindas pārtraukums%0A

URL kodēšana JavaScript, Python un PHP

Katrai valodai ir savas funkcijas, un tās atšķiras galvenokārt tajā, kā apstrādā atstarpes, slīpsvītras un ! ' ( ) * ~.

JavaScript ir encodeURIComponent (angļu valodā) vērtībai, encodeURI visai adresei un URLSearchParams veidlapas kodēšanai:

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 nepārvērš + par atstarpi, un nederīgas secības, piemēram, 100%, gadījumā tā izmet URIError.

Python funkcijas atrodas urllib.parse. quote pēc noklusējuma atstāj / (safe='/') un citādi kodē visu, izņemot RFC 3986 nerezervētās rakstzīmes. quote_plus raksta atstarpes kā + un kodē arī /:

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 kodē tā, kā to dara HTML veidlapa, un atstarpi raksta kā +, savukārt rawurlencode seko RFC 3986 un raksta %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 dod tādu pašu rezultātu kā Stingrs RFC 3986. urlencode atbilst Veidlapas dati, izņemot *, ko tā kodē kā %2A.

Biežāk uzdotie jautājumi

Vai atstarpe jākodē kā %20 vai +?

%20 darbojas jebkurā URL vietā. + nozīmē atstarpi tikai vaicājuma virknē un veidlapas datos, tas ir, formātā, ko sūta HTML veidlapas. Ceļā + ir parasta plusa zīme, tāpēc /a+b paliek /a+b. Ja vaicājuma vērtībā vajadzīga īsta plusa zīme, rakstiet to kā %2B. Rīkā Veidlapas dati raksta atstarpes kā +, bet pārējie trīs režīmi kā %20.

Ko URL nozīmē %20, %2F un %3D?

Tās ir kodētas rakstzīmes: %20 ir atstarpe, %2F slīpsvītra un %3D vienādības zīme. Citas, ko redzat bieži, ir %26 (&), %3F (?), %3A (:), %2C (komats) un %27 (apostrofs). Divi cipari ir rakstzīmes kods heksadecimālā sistēmā. Burti ar diakritiskajām zīmēm un citas rakstzīmes ārpus ASCII aizņem no diviem līdz četriem šādiem pāriem, piemēram, %C3%A9 burtam é. Ielīmējiet visu virkni dekodētājā, lai to izlasītu.

Kāda ir atšķirība starp encodeURI un encodeURIComponent?

encodeURI ir paredzēta visai adresei un atstāj negrozītas rakstzīmes, kas veido tās struktūru, piemēram, : / ? # & =. encodeURIComponent ir paredzēta vienai daļai, parametra vērtībai vai ceļa segmentam, un kodē arī šīs rakstzīmes, tāpēc https://example.com/?a=1&b=2 kļūst par https%3A%2F%2Fexample.com%2F%3Fa%3D1%26b%3D2. Šajā rīkā Parametra vērtība atbilst encodeURIComponent, bet Pilns URL ir kā encodeURI, tikai saglabā esošās secības, piemēram, %20, nevis pārvērš tās par %2520.

Kā noņemt UTM parametrus no URL?

Ielīmējiet saiti cilnē Analizēt un labot URL un nospiediet Noņemt izsekošanu (n). Tā uzreiz izdzēš katru utm_* birku un klikšķu ID, piemēram, fbclid un gclid. Pēc tam nospiediet Kopēt URL. Lai izmestu tikai dažus no tiem, izmantojiet Noņemt parametru rindās, kuras nevēlaties.

Vai URL kodēšana ir tas pats, kas šifrēšana vai Base64?

Nē. URL kodēšana neko neslēpj: ikviens var dekodēt caf%C3%A9 atpakaļ par café, tāpēc tā nekad neaizsargā paroli vai marķieri. Tā tikai padara rakstzīmes drošas lietošanai adresē. Base64 ir cits kodējums, kas jebkurus datus, arī bināros failus, pārvērš 64 rakstzīmju virknē. Base64 virknei URL joprojām jākodē +, / un =, ja vien neizmantojat URL drošo variantu, ko var izveidot Base64 kodētājs un dekodētājs.

Vai ielīmētie URL tiek augšupielādēti vai glabāti?

Nē. Kodēšana, dekodēšana un analīze notiek jūsu pārlūkā, un nekas no ielīmētā netiek sūtīts uz serveri. Tas ir svarīgi, jo URL bieži satur pieejas marķierus, sesiju ID vai paroles atiestatīšanas kodus. Pārlūks atceras tikai jūsu izvēlēto cilni un opcijas, nekad ne tekstus. Vienīgais, kas ielādē adresi, ir Atvērt, kas to atver jaunā cilnē tieši tāpat kā saites noklikšķināšana.

Vairāk rīku programmētājiem ir kategorijā Izstrādātāji, bet rīki, kas pārveido vienu formātu citā, ir apkopoti sadaļā Pārveidotāji. Lai atrastu atšķirības starp diviem gariem URL, piemēram, strādājošu un nestrādājošu API izsaukumu, ielīmējiet tos teksta salīdzināšanas rīkā un salīdziniet pa rakstzīmēm.

Es novērtētu, ja jūs dalītos ar šīm lapām ar draugiem, saglabātu tās grāmatzīmēs vai linkotu uz tām. Paldies! 🙏