URL Encoder at Parser

[ URL ]
https%3A%2F%2Fjuandesk.com%2Fsearch%3Fq%3D13th%20month%26sort%3Dnew%23top
Na-encode — isang halaga
Mga karakter73
Parameter2
[ PAREHONG ENCODING ]
Isang halaga — encodeURIComponent
https%3A%2F%2Fjuandesk.com%2Fsearch%3Fq%3D13th%20month%26sort%3Dnew%23top
Buong URL — encodeURI
https://juandesk.com/search?q=13th%20month&sort=new#top
[ ANG MGA BAHAGI ]
Protocolhttps
Hostjuandesk.com
Path/search
Queryq=13th%20month&sort=new
Fragmenttop
[ QUERY PARAMETER ]
q13th month
sortnew
The two encodings differ for this text, which is exactly when the choice matters. Use the component form for a single value going into a URL; use the whole-URI form only for a URL that is already assembled.
[ ANO ITO ]

Hindi magkapalit ang dalawang encoder, at iyon ang buong tool.

Ang encodeURIComponent ay ini-escape ang / ? : @ & = + $ # — para sa isang piraso na ipapasok sa URL. Ang encodeURI ay hindi — para sa buong URL na nabuo na.

Ang paggamit ng pangalawa kung saan kailangan ang una ang pinakakaraniwang bug sa URL: ang halagang may & ay nahahati sa dalawang parameter, at ang may # ay pinuputol ang URL sa fragment. Mukha silang kasalanan ng server at hindi.

At ang plus ay espasyo sa query string at wala nang iba. Ang form ay nag-e-encode ng espasyo bilang +; ang URL specification ay %20. Kaya ang decoder na nagpapalit ng bawat plus ay sumisira sa tunay na plus sa isang path.

[ MGA TANONG ]

Anong encoding ang dapat kong gamitin?

Kung nag-e-encode ka ng IISANG BAHAGING papasok sa URL — isang halaga ng query, isang bahagi ng path — gamitin ang anyong component, na ine-escape ang nakareserbang karakter na / ? : @ & = + $ at #. Kung nag-e-encode ka ng URL na buo na, gamitin ang anyong buong-URL, na iniiwan silang tahimik dahil ginagawa nila ang trabaho nila. Ang pagbaligtad nito ang pinakakaraniwang bug sa URL.

Ano ang mababali kapag ginamit ko ang anyong buong-URL sa isang halaga?

Nakakaligtas nang hindi na-escape ang nakareserbang karakter at nababago ang kahulugan ng URL. Ang halagang may & ay nahahati sa dalawang query parameter. Ang halagang may # ay pinuputol ang URL sa fragment, kaya ang lahat ng kasunod ay hindi na nakakarating sa server. Mukha silang depekto ng server at hindi naman.

Espasyo ba o plus ang +?

Depende sa kung nasaan ito. Sa query string na gawa ng HTML form, + ang encoding ng espasyo. Saanman pa sa URL, ang espasyo ay %20 at ang + ay literal na plus. Kaya ang pag-decode ng + bilang espasyo ay sumisira sa tunay na plus sa path, at ang hindi pag-decode nito ay nag-iiwan ng plus sa halaga ng form. Switch ito sa pahinang ito, at nakapatay bilang default.

Bakit hindi nag-decode ang teksto ko?

May % ito na hindi nagsisimula ng wastong escape — ang “100% sure” ang karaniwang salarin. Bumabagsak ang pag-decode doon, kaya ipinapakita ang teksto nang hindi nababago at may paalala sa halip na error, dahil idinikit mo ito para makita kung ano ito.

Bakit nakalista lahat ng paulit-ulit na query parameter?

Dahil legal ang pag-ulit ng key at magkakaiba ang paghawak dito ng bawat framework — may nagpapanatili sa una, may sa huli, may gumagawa ng listahan. Ang pagsasama sa kanila dito ay magtatago ng tunay na kalabuan, kaya ipinapakita silang lahat at sinasabi ng pahina na nakadepende ang kilos sa kung sino ang nagbabasa.

Ligtas bang mag-paste ng URL na may kasamang kredensiyal?

Walang umaalis sa browser mo sa anumang ipinapaste mo, kaya ligtas ito sa amin. Hindi ito ligtas sa pangkalahatan: ang password sa URL ay napupunta sa log ng server, kasaysayan ng browser at sa Referer header, kaya ang URL na minsan nang nagdala ng isa ay dapat ituring na nabuko na. Tinatakpan ito ng pahinang ito sa halip na ipakita ito pabalik sa iyo.

[ ANG KOMPUTASYON ]
Ang parehong encoder sa iisang teksto
Input
a&b=c#d
encodeURIComponent — isang halaga
a%26b%3Dc%23d
encodeURI — buong URL
a&b=c#d

Ang pangalawa ay walang binago. Kung halaga ito sa query string, nahati na ito sa dalawang parameter at naputol sa fragment.

[ ANG PLUS ]
Sa query string ng form+ = espasyo
Kahit saan pa sa URL+ = plus
[ SUSUNOD ]
58Gumawa ng SlugMake the path segment in the first place
44Base64 Encoder / DecoderThe other encoding in every URL
72HTTP Status CodesWhat came back from that URL
56Pang-alis ng HTML TagThe other kind of escaping
[ MAHALAGA ]

Runs entirely in your browser; nothing is transmitted. Both encodings are shown because using the whole-URL form where the component form is needed is the commonest URL bug — and it produces a URL that looks correct. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.