Pāriet uz saturu

URL kodētājs: Īpašo rakstzīmju kodēšana URL adresēs tiešsaistē bez maksas

Bezmaksas rīks URL virkņu kodēšanai, lai nekavējoties kodētu īpašās rakstzīmes. Pārveidojiet atstarpes, Unicode un simbolus procentuālā kodējuma formātā. Ideāli piemērots API, tīmekļa formām un starptautiskām URL adresēm. Izmēģiniet tūlīt!

URL virknes ekranētājs

Ielādes kalkulators...
📚

Dokumentācija

URL kodēšana: kas tā ir un kā tā darbojas

URL kodēšana, saukta arī par procentkodēšanu, ir veids, kā tīmekļa adresē attēlot rakstzīmes, izmantojot tikai nelielu drošu ASCII rakstzīmju kopu. Tā darbojas, nedrošu rakstzīmi aizstājot ar zīmi %, kam seko divi heksadecimālie cipari. Šis URL virkņu ekrānrakstītāja rīks kodē tekstu tāpat kā JavaScript iebūvētā funkcija encodeURIComponent.

Kāpēc URL adreses ir jākodē

URL drīkst saturēt tikai ierobežotu rakstzīmju kopu: burtus, ciparus un nedaudzus pieturzīmju simbolus. Atstarpes, diakritiskās rakstzīmes, rakstzīmes no alfabētiem, kas nav latīņu alfabēts, un tādi simboli kā & vai = var sabojāt URL vai mainīt tā nozīmi, ja tie tajā parādās nekodēti. Piemēram, atstarpe saitē var izraisīt to, ka pārlūkprogramma vai serveris URL nolasa kā divas atsevišķas daļas. Procentkodēšana aizstāj šīs rakstzīmes ar kodu, ko visas pārlūkprogrammas un serveri var nolasīt vienādi.

Rakstzīmes, ko šis rīks atstāj nemainītas

Šis rīks nekad nemaina tālāk norādītās rakstzīmes. Tās tiek izlaistas bez izmaiņām:

  • Lielie un mazie burti: A–Z, a–z
  • Cipari: 0–9
  • Pieturzīmes - . _ ~ ! * ' ( )

Visas pārējās rakstzīmes tiek procentkodētas, tostarp:

  • Atstarpes rakstzīme un tādas pieturzīmes kā : / ? # [ ] @ $ & + , ; =
  • Diakritiskās rakstzīmes un jebkura cita rakstzīme, kas nav ASCII vai ir unikoda rakstzīme
  • Burtiska rakstzīme % pati, kas vienmēr kļūst par %25, pat ja tā jau bija daļa no procentkodētas virknes

Dažās vispārīgās URL sintakses rokasgrāmatās ! * ' ( un ) tiek grupētas ar citām pieturzīmēm kā rakstzīmes, kuras dažos kontekstos “var būt jākodē”. Šis konkrētais rīks tās nekodē, jo ievēro encodeURIComponent noteikumu kopu, kurā tās tiek uzskatītas par drošām.

Kā aprēķināt procentkodētu virkni (formula)

Rīks pārbauda katru ievades rakstzīmi pa vienai un piemēro šādu noteikumu:

  1. Ja rakstzīme ir viena no iepriekš uzskaitītajām nemainītajām rakstzīmēm, atstājiet to tādu, kāda tā ir.
  2. Pretējā gadījumā pārveidojiet rakstzīmi tās UTF-8 baitu virknē. Latīņu burti ar diakritiskajām zīmēm, grieķu, kirilicas un arābu burti izmanto divus baitus. Ķīniešu, japāņu un korejiešu rakstzīmes izmanto trīs baitus. Emocijzīmes izmanto četrus baitus.
  3. Uzrakstiet katru baitu kā divciparu heksadecimālu skaitli.
  4. Katra heksadecimālā pāra priekšā ievietojiet %.
  5. Savienojiet rezultātus secībā, lai izveidotu kodēto virkni.

Aprēķina piemērs

Ievade: Jürgen & Björk

Apstrāde pa vienai rakstzīmei:

RakstzīmeRezultāts
JJ (nemainīta)
ü%C3%BC (UTF-8 baiti 0xC3, 0xBC)
rgenrgen (nemainīta)
(atstarpe)%20
&%26
(atstarpe)%20
BjBj (nemainīta)
ö%C3%B6 (UTF-8 baiti 0xC3, 0xB6)
rkrk (nemainīta)

Izvade: J%C3%BCrgen%20%26%20Bj%C3%B6rk

Otrs piemērs parāda, kā darbojas nemainīto rakstzīmju kopa. Virknes -_.!~*'() kodēšana izveido -_.!~*'() — teksts paliek pilnīgi tāds pats, jo visas tajā esošās rakstzīmes pieder nerezervēto rakstzīmju kopai. Virknes 100% kodēšana izveido 100%25, jo pati zīme % nav droša rakstzīme.

Procentkodētas virknes dekodēšana

Dekodēšana procesu apvērš: katra %XX secība tiek nolasīta kā heksadecimāls baits, baiti tiek atkal sagrupēti sākotnējā UTF-8 rakstzīmē, un rakstzīme aizstāj šo secību. Piemēram, %C3%BC tiek dekodēta atpakaļ par ü, bet %20 tiek dekodēta par atstarpi. Šis rīks tikai kodē; procesa apvēršanai nepieciešams atsevišķs dekodētājs.

Biežākie lietojumi

Procentkodēšanu izmanto ikreiz, kad URL adresē jāiekļauj teksts, ko ievadījusi persona, nevis programmētājs:

  • Meklēšanas lodziņi, kas meklējamo frāzi ievieto adreses joslā, piemēram, ?q=shoes%20%26%20bags
  • Vaicājuma parametri, kas satur vārdus, adreses vai citus lietotāja datus
  • Saites uz lapām, kuru virsraksti ir valodās ar diakritiskajām zīmēm vai rakstībā, kas nav latīņu
  • API pieprasījumi, kuros marķieri vai identifikatori tiek nodoti kā URL daļa

Koda piemēri

1// JavaScript
2encodeURIComponent("Jürgen & Björk");
3// "J%C3%BCrgen%20%26%20Bj%C3%B6rk"
4

Python funkcija quote vienmēr atstāj burtus, ciparus un - . _ ~ nemainītus. Piecas papildu rakstzīmes ! * ' ( ) ir jānorāda safe sarakstā, lai tas atbilstu šim rīkam. Bez tām quote to vietā atgriež %21 %2A %27 %28 %29.

Vēsture

Ideja par nedrošu rakstzīmju kodēšanu URL adresē aizsākās ar RFC 1738 (4410 cm) 1994. gadā. Tas bija viens no pirmajiem dokumentiem, kurā tika definēts URL formāts. RFC 3986, kas publicēts 2005, atjaunināja noteikumus un formāli definēja “nerezervēto” rakstzīmju kopu, kuras nekad nav jākodē. encodeURIComponent — JavaScript funkcija, uz kuras balstīts šis rīks, izmanto nedaudz plašāku nerezervēto rakstzīmju kopu nekā RFC 3986: tā arī atstāj nekodētas ! * ' ( un ), atbilstoši agrākai URI specifikācijas versijai.

Biežāk uzdotie jautājumi

Kāda ir atšķirība starp URL kodēšanu un URL ekranēšanu? Tā ir viena un tā pati darbība. Abi termini apzīmē procentkodēšanu, kurā rakstzīme tiek aizstāta ar % un diviem heksadecimālajiem cipariem.

Kāpēc šajā rīkā !, *, ', ( un ) paliek nemainītas? Šis rīks izmanto encodeURIComponent, kas šīs piecas rakstzīmes uzskata par drošām un atstāj tieši tādas, kā tās ievadītas. Citas kodēšanas funkcijas un daži serveri joprojām var pieprasīt, lai tās tiktu kodētas, tāpēc, ja rodas problēmas, pārbaudiet mērķa sistēmu.

Kāda ir atšķirība starp %20 un +, kas apzīmē atstarpi? Abi apzīmē atstarpi. %20 ir vispārīgais atstarpes procentkodējums. Zīme + ir īpašs gadījums, ko izmanto tikai application/x-www-form-urlencoded datos — HTML veidlapu iesniegšanas formātā, nevis šajā rīkā.

Vai šis rīks dekodē jau kodētu tekstu? Nē. Tas tikai kodē. Ja ievade jau satur zīmi %, šī % zīme tiek uzskatīta par burtisku rakstzīmi un izvadē kļūst par %25, nevis paliek nemainīta.

Kā tiek apstrādātas rakstzīmes, kas nav latīņu alfabētā, piemēram, ķīniešu vai arābu teksts? Katra rakstzīme vispirms tiek pārveidota tās UTF-8 baitu virknē, pēc tam katrs baits tiek procentkodēts. Ķīniešu rakstzīme izmanto trīs baitus, tāpēc tā izveido trīs %XX grupas. Arābu burts izmanto divus baitus, tāpēc tas izveido divas grupas.

Kad rīks atsakās kodēt tekstu? Tikai tad, ja teksts satur surogātpāra pusi. Surogātpāris ir divdaļīgs kods, kurā tiek glabāta rakstzīme virs U+FFFF, piemēram, emocijzīme. Vienai daļai nav derīgas UTF-8 formas, tāpēc rīks rezultāta vietā parāda kļūdu. Parasta rakstīšana šādu situāciju nevar radīt; parasti tā rodas no saīsinātas kopēšanas vai bojātas saites.

Vai jākodē viss URL vai tikai tā daļa? Kodējiet tikai tās daļas, kurās atrodas lietotāja dati, piemēram, vaicājuma vērtības vai ceļa segmenti, nevis URL struktūru veidojošās daļas, piemēram, https:// un domēna vārdu. Pilna URL kodēšana ar komponentu kodētāju arī pārvērstu tā rakstzīmes :, / un ? procentkodā, sabojājot adresi.

Literatūras saraksts

  1. RFC 3986 — vienotais resursu identifikators (URI): vispārīgā sintakse
  2. Procentkodēšana — Wikipedia
  3. MDN — encodeURIComponent()
  4. URL standarts — WHATWG