Utilia

URL Encoder at Decoder

Libreng URL encoder at decoder. I-percent-encode ang mga query parameter o buong URL, i-decode ang mga %XX sequence at ituring na espasyo ang +, sa browser mo.

Mode

Paano gamitin ang URL encoder at decoder

  1. Piliin ang I-encode para gawing URL-safe na anyo ang text, o I-decode para ibalik sa nababasang mga karakter ang percent-encoded na text.
  2. Sa pag-encode, pumili ng mode: Component para sa iisang halaga (gaya ng query parameter o path segment), o Buong URL para i-encode ang kumpletong address habang buo ang istruktura nito.
  3. Sa pag-decode ng data na galing sa HTML form o query string, i-on ang Ituring na espasyo ang + para maging espasyo ang mga +.
  4. I-paste ang text at kopyahin ang resulta. Kung may maling percent sequence, mag-uulat ng error ang tool sa halip na manghula.

Ano ang URL encoding?

Limitadong set lang ng mga ASCII na karakter ang puwede sa mga URL. May mga karakter, gaya ng /, ?, #, & at =, na nakareserba dahil naghihiwalay ang mga ito ng mga bahagi ng address: ang path, ang query string at ang fragment. Ang iba, gaya ng mga espasyo, quote, letrang may accent o emoji, ay hindi talaga pinapayagan. Nilulutas ng URL encoding, na tinatawag ding percent-encoding, ang dalawang problema sa pamamagitan ng pagpapalit sa bawat problemadong byte ng % na sinusundan ng dalawang hexadecimal na digit.

Kino-convert muna ang text sa mga UTF-8 byte, at hiwalay na ine-encode ang bawat byte. Ang espasyo ay nagiging %20, ang ampersand ay %26, ang é (dalawang byte sa UTF-8) ay %C3%A9, at ang emoji na 😀 (apat na byte) ay %F0%9F%98%80. Hindi kailanman kailangang i-encode ang mga unreserved na karakter, ibig sabihin ang mga letra, digit at - _ . ~.

Component mode laban sa full URL mode

Ang pagpili ng tamang mode ang pinakamahalagang desisyon, at klasikong pinagmumulan ng bug ang pagkakamali rito.

Ang Component mode ay gumagana gaya ng encodeURIComponent ng JavaScript. Ine-encode nito ang bawat nakareserbang karakter, kaya ligtas na mailalagay ang resulta sa loob ng isang bahagi ng URL. Gamitin ito para sa mga halaga ng query parameter, path segment o anumang tina-type ng user. Halimbawa, ang search term na rock & roll ay nagiging rock%20%26%20roll. Kung hindi mo na-encode ang &, babasahin ng server ang roll bilang simula ng bagong parameter.

Ang Buong URL mode ay gumagana gaya ng encodeURI. Ipinapalagay nitong kumpletong address na ang input at pinapanatili ang mga karakter na nagbibigay ng istruktura rito, gaya ng : / ? # & at =, habang ine-encode ang mga espasyo at karakter na hindi ASCII. Gamitin ito para ayusin ang address gaya ng https://example.com/café menu?q=tea para maging https://example.com/caf%C3%A9%20menu?q=tea. Huwag itong gamitin sa mga indibidwal na halaga: mananatiling hindi naka-encode ang & sa loob ng halaga at masisira ang query string.

Isang magandang panuntunan: buuin ang mga URL mula sa mga bahagi, i-encode ang bawat halaga sa component mode, at gamitin lang ang full URL mode para sa mga address na natanggap mong buo na.

Ang + sign at form encoding

Ang mga HTML form na isinumite gamit ang application/x-www-form-urlencoded ay ine-encode ang mga espasyo bilang + sa halip na %20. Kaya madalas na ganito ang itsura ng mga search URL: ?q=hello+world. Hindi ginagalaw ng karaniwang percent-decoding ang +, dahil sa path, plus lang talaga ang plus. Kapag nagde-decode ka ng query string o form data, i-on ang Ituring na espasyo ang + para makuha ang hello world. Iwanang naka-off para sa mga path at sa mga halagang mahalaga ang literal na +, gaya ng mga numero ng telepono o Base64 data. Ang totoong plus sign sa form data ay ipinapadala bilang %2B, kaya tama itong nade-decode sa alinmang paraan.

Privacy

Buong tumatakbo sa iyong browser ang pag-encode at pag-decode. Walang ipinapadala sa server o iniimbak sa anumang pine-paste mo, kasama ang mga URL na maaaring may token, session ID o personal na data.

Mga madalas itanong

Bakit pumapalya ang pag-decode na may error na "maling" percent-encoding?

Dapat sundan ng eksaktong dalawang hexadecimal na digit ang %, at dapat bumuo ng valid na UTF-8 ang mga resultang byte. Ang mga string gaya ng 100%, %G1 o putol na sequence gaya ng %E2%82 ay hindi mapagkakatiwalaang ma-decode, kaya iniuulat ng tool ang problema sa halip na gumawa ng maling text. Para maglagay ng literal na percent sign, i-encode ito bilang %25.

Ano ang pagkakaiba ng %20 at +?

Parehong puwedeng kumatawan sa espasyo, pero sa magkaibang konteksto. Valid saanman sa URL ang %20. Ang + ay nangangahulugang espasyo lang sa mga query string na naka-encode bilang form; sa ibang lugar, literal na plus sign ito.

Dapat ko bang i-encode ang buong URL sa component mode?

Kung ang buong URL mismo ay halaga sa loob ng ibang URL lang, halimbawa ang parameter na redirect=. Sa kasong iyon, eksaktong tama ang component mode: ang https://a.com/?x=1 ay nagiging https%3A%2F%2Fa.com%2F%3Fx%3D1.

Bakit dalawang beses na-encode ang text ko?

Nangyayari ang double encoding kapag ine-encode ulit ang text na naka-encode na, na ginagawang %2520 ang %20. I-decode nang isang beses para suriin, at tiyaking ine-encode ang bawat halaga sa mismong sandali lang na ipinapasok ito sa URL.

Tinatago o pinoprotektahan ba ng URL encoding ang data?

Hindi. Ganap na mababaligtad ang percent-encoding at walang ibinibigay na seguridad. Maaaring mapunta sa history ng browser at mga log ng server ang mga sensitibong halaga sa mga URL, kaya iwasang maglagay ng mga secret sa mga URL.