CodeKitHub
Kodēšanas rīki

URL Kodētājs / Dekodētājs Tiešsaistē

Pēdējoreiz atjaunināts:

Kodē tekstu procentu formātā drošai lietošanai URL adresēs, vai dekodē kodētu URL atpakaļ lasāmā formā. Izvēlies komponentes režīmu (kodē visu, paredzēts vaicājuma parametru vērtībām) vai pilnā URL režīmu (saglabā :// ? & struktūru neskartu). Darbojas pilnībā tavā pārlūkā.

Kas ir šis rīks?

URL kodēšana (procentu kodēšana) aizvieto URL nepieļaujamas rakstzīmes ar % un to baita vērtību heksadecimālā formātā — atstarpe kļūst par %20, bet 你 kļūst par %E4%BD%A0. Bez tā tādas rakstzīmes kā atstarpes, &, ? un ne-ASCII teksts sabojātu URL struktūru vai tiktu servera nepareizi interpretētas.

Ir divi bieži sastopami gadījumi, un šis rīks atbalsta abus: vērtības kodēšana, kas nonāk vaicājuma parametrā (komponentes režīms — kodē arī / ? & =), un visa URL kodēšana, saglabājot tā struktūru (pilnā URL režīms — atstāj :// ? & neskartu).

Vēsturiska nianse, ko vērts zināt: saskaņā ar URL standartu (RFC 3986) atstarpe pareizi ir %20, taču HTML formu iesniegumi tradicionāli to kodē kā plusa zīmi — tāpēc dabā redzams gan q=hello%20world, gan q=hello+world, un tāpēc, dekodējot formas datus, dažreiz + jāapstrādā atsevišķi.

Kāpēc to izmantot?

  • Droši veido vaicājuma virknes — lietotāja ievade ar &, = vai atstarpēm nesabojās tavu URL.
  • Dekodē garus kodētus URL no žurnāliem, analītikas vai pāradresācijas ķēdēm, lai redzētu, ko tie patiesībā saka.
  • Pareiza UTF-8 apstrāde ķīniešu, emoji un cita ne-ASCII teksta gadījumā.
  • Divi režīmi, lai netīšām nesabojātu visa URL : un / struktūru.
  • Bezmaksas, tūlītējs, bez augšupielādes.

Kā to lietot

  1. Ielīmē tekstu vai URL ievades laukā.
  2. Izvēlies režīmu: "Komponente" vērtībām, kas nonāk vaicājuma parametros, "Pilns URL" veseliem URL.
  3. Klikšķini "Kodēt" vai "Dekodēt".
  4. Nokopē rezultātu.

Piemērs

Ievade

https://example.com/search?q=hello world & 你好

Izvade

Komponentes režīms: https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%20%26%20%E4%BD%A0%E5%A5%BD
Pilna URL režīms:  https://example.com/search?q=hello%20world%20&%20%E4%BD%A0%E5%A5%BD

Komponentes režīms kodē arī struktūras rakstzīmes; pilnā URL režīms tās saglabā.

Bieži lietošanas gadījumi

  • Kopīgojama URL veidošana, kur meklēšanas termins vai filtra vērtība nāk no lietotāja ievades un var saturēt atstarpes, & vai citas īpašas rakstzīmes.
  • Gara izsekošanas vai pāradresācijas URL dekodēšana no e-pasta vai reklāmas kampaņas, lai redzētu faktisko galamērķi un parametrus pirms uzklikšķināšanas.
  • Kļūdu meklēšana, kāpēc vaicājuma parametrs netiek pareizi nolasīts serverī — bieži vainīga ir rezervēta rakstzīme, kam vajadzēja būt kodētai, bet nebija.
  • Ne-angļu (ķīniešu, japāņu, arābu u.c.) vērtības sagatavošana lietošanai URL vaicājuma virknē.

encodeURIComponent pret encodeURI praksē

Tie tieši atbilst šī rīka diviem režīmiem un sasaucas ar reālām JavaScript funkcijām, ko izstrādātāji jau pazīst: encodeURIComponent (komponentes režīms) kodē visu, izņemot nelielu nerezervētu rakstzīmju kopu, padarot to drošu jebkurai atsevišķai vērtībai, ko ievieto URL — to izmanto vaicājuma parametram, ceļa segmentam vai fragmenta vērtībai. encodeURI (pilnā URL režīms) atstāj URL struktūras rakstzīmes (:, /, ?, #, &, =) neskartas, jo pieņem, ka kodē veselu, jau strukturētu URL, nevis neapstrādātu vērtību — to izmantojot atsevišķai parametra vērtībai, netiktu kodēts & vai =, ko tā var saturēt, un tā ir visbiežākā kļūda, izvēloties nepareizu režīmu.

Rezervētās un nerezervētās rakstzīmes

URL specifikācija (RFC 3986) dala rakstzīmes divās grupās: nerezervētas rakstzīmes (burti, cipari, - _ . ~) vienmēr ir drošas un netiek kodētas, savukārt rezervētām rakstzīmēm (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) ir īpaša nozīme URL struktūrā, un tās jākodē tikai tad, ja parādās kā burtiski dati, nevis strukturāla pieturzīme. Tieši tāpēc pastāv abi režīmi — komponentes režīms uzskata rezervētās rakstzīmes par datiem, kas jāaizsargā, pilnā URL režīms — par struktūru, kas jāsaglabā. Šīs atšķirības izpratne ir noderīgāka nekā iegaumēt, kuru režīmu izmantot kad, jo tā izskaidro, kāpēc tā pati rakstzīme (piemēram, &) dažreiz tiek kodēta, dažreiz atstāta neskarta atkarībā no tās lomas konkrētajā URL.

Biežāk uzdotie jautājumi

Kad izmantot komponentes režīmu, kad — pilno URL režīmu?

Komponentes režīmu (encodeURIComponent) izmanto, kodējot vienu vērtību, kas nonāk vaicājuma parametrā — tas kodē /, ?, & un =, lai tie nesabojātu URL. Pilnā URL režīmu (encodeURI) izmanto, kodējot veselu URL — tas saglabā struktūras rakstzīmes, lai URL joprojām darbotos.

Kāpēc parādījās %20, nevis + atstarpei?

Abi ir derīgi dažādos kontekstos. %20 ir universālā procentu kodēšana atstarpei; + nozīmē atstarpi tikai vaicājuma virknēs, izmantojot vecāko application/x-www-form-urlencoded formātu. Šis rīks izmanto %20, kas darbojas visur.

Kāpēc dekodēšana neizdodas ar kļūdu?

Ievadē ir nepareizi izveidota procentu secība, piemēram, %, kam neseko divi heksadecimālie cipari. Tas bieži notiek, ja URL ir nogriezts vai dekodēts divreiz. Salabo vai noņem bojāto % secību.

Kas ir dubultā kodēšana?

Jau kodēta teksta atkārtota kodēšana: %20 kļūst par %2520, jo pats % tiek kodēts kā %25. Tā ir izplatīta kļūda — ja dekodētajā rezultātā joprojām ir % kodi, dekodē vēlreiz.

Vai tas apstrādā ķīniešu rakstzīmes un emoji?

Jā. Teksts tiek kodēts kā UTF-8 baiti, tāpēc 你好 kļūst par %E4%BD%A0%E5%A5%BD un dekodējas atpakaļ perfekti — tāpat, kā to dara pārlūkprogrammas.

Saistītie rīki