URL kodavimas: Specialiųjų simbolių užkodavimas URL adresuose internete nemokamai
Nemokamas URL eilučių užkodavimo įrankis, leidžiantis iš karto užkoduoti specialiuosius simbolius. Konvertuokite tarpus, unikodo simbolius ir kitus simbolius į procentinį kodavimo formatą. Idealiai tinka API, žiniatinklio formoms ir tarptautiniams URL adresams. Išbandykite dabar!
URL eilutės užkodavimas
Dokumentacija
URL kodavimas: kas tai yra ir kaip jis veikia
URL kodavimas, dar vadinamas procentiniu kodavimu, yra būdas žiniatinklio adrese pateikti simbolius naudojant tik nedidelį saugių ASCII simbolių rinkinį. Jis veikia nesaugų simbolį pakeičiant % ženklu, po kurio pateikiami du šešioliktainiai skaitmenys. Šis URL eilutės kodavimo įrankis koduoja tekstą taip pat, kaip ir „JavaScript“ įtaisytosios funkcijos encodeURIComponent.
Kodėl URL reikia koduoti
URL leidžiama naudoti tik ribotą simbolių rinkinį: raides, skaitmenis ir kelis skyrybos ženklus. Jei tarpai, diakritinės raidės, nelotyniškų abėcėlių simboliai ir tokie ženklai kaip & ar = pateikiami nekoduoti, jie gali sugadinti URL arba pakeisti jo reikšmę. Pavyzdžiui, nuorodoje esantis tarpas gali lemti, kad naršyklė arba serveris URL perskaitys kaip dvi atskiras dalis. Procentinis kodavimas šiuos simbolius pakeičia kodu, kurį visos naršyklės ir serveriai gali perskaityti vienodai.
Simboliai, kurių šis įrankis nekeičia
Šis įrankis niekada nekeičia toliau pateiktų simbolių. Jie perduodami tiesiogiai:
- Didžiosios ir mažosios raidės:
A–Z,a–z - Skaitmenys:
0–9 - Skyrybos ženklai
-._~!*'()
Visi kiti simboliai koduojami procentiniu būdu, įskaitant:
- Tarpą ir tokius skyrybos ženklus kaip
:/?#[]@$&+,;= - Diakritinės raidės ir visi kiti ne ASCII arba unikodo simboliai
- Pats pažodinis
%simbolis, kuris visada pakeičiamas į%25, net jei jau buvo procentais koduotos sekos dalis
Kai kuriuose bendruosiuose URL sintaksės vadovuose ! * ' ( ir ) kartu su kitais skyrybos ženklais priskiriami simboliams, kuriuos tam tikrais atvejais „gali reikėti koduoti“. Šis konkretus įrankis jų nekoduoja, nes vadovaujasi encodeURIComponent taisyklių rinkiniu, kuriame jie laikomi saugiais.
Kaip apskaičiuoti procentais koduotą eilutę (formulė)
Įrankis tikrina kiekvieną įvesties simbolį atskirai ir taiko šią taisyklę:
- Jei simbolis yra vienas iš pirmiau išvardytų nekeičiamų simbolių, palikite jį nepakeistą.
- Kitu atveju paverskite simbolį į jo UTF-8 baitų seką. Diakritinėms lotynų, graikų, kirilicos ir arabų raidėms naudojami du baitai. Kinų, japonų ir korėjiečių simboliams naudojami trys. Jaustukams naudojami keturi.
- Kiekvieną baitą užrašykite kaip dviženklį šešioliktainį skaičių.
- Prieš kiekvieną šešioliktainių skaitmenų porą įrašykite
%. - Sujunkite rezultatus eilės tvarka, kad gautumėte koduotą eilutę.
Išspręstas pavyzdys
Įvestis: Jürgen & Björk
Nagrinėjimas po vieną simbolį:
| Simbolis | Rezultatas |
|---|---|
J | J (nepakeistas) |
ü | %C3%BC (UTF-8 baitai 0xC3, 0xBC) |
rgen | rgen (nepakeistas) |
(tarpas) | %20 |
& | %26 |
(tarpas) | %20 |
Bj | Bj (nepakeistas) |
ö | %C3%B6 (UTF-8 baitai 0xC3, 0xB6) |
rk | rk (nepakeistas) |
Rezultatas: J%C3%BCrgen%20%26%20Bj%C3%B6rk
Antras pavyzdys parodo, kaip veikia nekeičiamų simbolių rinkinys. Užkodavus eilutę -_.!~*'() gaunama -_.!~*'(), t. y. visiškai ta pati eilutė, nes kiekvienas jos simbolis priklauso nerezervuotų simbolių rinkiniui. Užkodavus eilutę 100% gaunama 100%25, nes pats % ženklas nėra saugus simbolis.
Procentais koduotos eilutės dekodavimas
Dekodavimas yra atvirkštinis procesas: kiekviena %XX seka perskaitoma kaip šešioliktainis baitas, baitai vėl sugrupuojami į pradinį UTF-8 simbolį, o simbolis pakeičia seką. Pavyzdžiui, %C3%BC iškoduojama atgal į ü, o %20 iškoduojama į tarpą. Šis įrankis tik koduoja; norint atlikti atvirkštinį procesą, reikia atskiro dekoderio.
Įprastas taikymas
Procentinis kodavimas naudojamas visada, kai į URL turi būti įtrauktas žmogaus įvestas, o ne programuotojo parašytas tekstas:
- Paieškos laukeliai, kuriuose paieškos terminas įtraukiamas į adreso juostą, pavyzdžiui,
?q=shoes%20%26%20bags - Užklausos parametrai, kuriuose perduodami vardai, adresai ar kiti naudotojo duomenys
- Nuorodos į puslapius, kurių pavadinimuose vartojamos diakritinės raidės arba nelotyniškas raštas
- API užklausos, kuriose prie URL perduodami prieigos raktai arba identifikatoriai
Kodo pavyzdžiai
1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
41# Python
2import urllib.parse
3urllib.parse.quote("Jürgen & Björk", safe="!*'()")
4# 'J%C3%BCrgen%20%26%20Bj%C3%B6rk'
5Python funkcija quote visada palieka raides, skaitmenis ir - . _ ~ nepakeistus. Kad atitiktų šį įrankį, penki papildomi
simboliai ! * ' ( ) turi būti išvardyti parametre safe. Be
jų quote grąžina %21 %2A %27 %28 %29.
Istorija
Nesaugių simbolių kodavimo URL idėja siekia RFC 1738 dokumentą, paskelbtą (4 410 cm) 1994 metais. Tai buvo vienas pirmųjų dokumentų, apibrėžusių URL formatą. 3986 RFC, paskelbtas 2005 metais, atnaujino taisykles ir formaliai apibrėžė „nerezervuotųjų“ simbolių rinkinį, kurių niekada nereikia koduoti. encodeURIComponent, „JavaScript“ funkcija, kuria pagrįstas šis įrankis, naudoja šiek tiek platesnį nerezervuotųjų simbolių rinkinį nei 3986 RFC: ji taip pat palieka nekoduotus ! * ' ( ir ), kaip buvo nustatyta ankstesnėje URI specifikacijos versijoje.
Dažnai užduodami klausimai
Kuo skiriasi URL kodavimas ir URL ekranavimas?
Tai tas pats procesas. Abu terminai apibūdina procentinį kodavimą, kai simbolis pakeičiamas % ženklu ir dviem šešioliktainiais skaitmenimis.
Kodėl šiame įrankyje !, *, ', ( ir ) lieka nepakeisti?
Šis įrankis naudoja encodeURIComponent, kuri šiuos penkis simbolius laiko saugiais ir palieka tiksliai tokius, kokie įvesti. Kitos kodavimo funkcijos ir kai kurie serveriai gali vis tiek tikėtis, kad jie bus užkoduoti, todėl, jei kyla problemų, patikrinkite paskirties sistemą.
Kuo skiriasi %20 ir +, kai žymimas tarpas?
Abu žymi tarpą. %20 yra bendras tarpo procentinio kodavimo būdas. + ženklas yra specialus atvejis, naudojamas tik application/x-www-form-urlencoded duomenyse – HTML formų pateikimo formate, o ne šiame įrankyje.
Ar šis įrankis iškoduoja jau užkoduotą tekstą?
Ne. Jis tik koduoja. Jei įvestyje jau yra % ženklas, tas % laikomas pažodiniu simboliu ir rezultate pakeičiamas į %25, o ne paliekamas nepakeistas.
Kaip tvarkomi nelotyniški simboliai, pavyzdžiui, kinų ar arabų tekstas?
Kiekvienas simbolis pirmiausia paverčiamas į UTF-8 baitų seką, tada kiekvienas baitas užkoduojamas procentiniu būdu. Kinų simboliui naudojami trys baitai, todėl gaunamos trys %XX grupės. Arabų raidei naudojami du baitai, todėl gaunamos dvi grupės.
Kada įrankis atsisako koduoti tekstą? Tik tada, kai tekste yra viena pakaitinių simbolių poros dalis. Pakaitinių simbolių pora yra dviejų dalių kodas, kuriuo saugomas simbolis, esantis aukščiau nei U+FFFF, pavyzdžiui, jaustukas. Viena atskira pusė neturi tinkamos UTF-8 formos, todėl įrankis vietoj rezultato parodo klaidą. Įprastai rašant tokio simbolio sukurti neįmanoma; dažniausiai jis gaunamas iš sutrumpintos kopijos arba sugadintos nuorodos.
Ar reikėtų koduoti visą URL, ar tik jo dalį?
Koduokite tik dalis, kuriose laikomi naudotojo duomenys, pavyzdžiui, užklausos reikšmes arba kelio segmentus, o ne dalis, sudarančias URL struktūrą, pavyzdžiui, https:// ir domeno vardą. Koduojant visą URL komponentų kodavimo funkcija jo :, / ir ? simboliai taip pat būtų paversti procentiniais kodais, todėl adresas nustotų veikti.