About URL Encoding
Ang URL encoding, na kilala rin bilang percent-encoding, ay isang mekanismo para sa pag-encode ng impormasyon sa isang Uniform Resource Identifier (URI). Ginagamit ito upang i-convert ang mga karakter na hindi pinapayagan sa isang URL sa isang format na maaaring maipadala sa Internet. Pinalitan ng encoding na ito ang mga unsafe na ASCII character ng "%" kasunod ang dalawang hexadecimal na digit.
Karaniwang Paggamit ng URL Encoding
- Pag-format ng query strings sa mga URL
- Pagpapadala ng form data sa pamamagitan ng HTTP requests (application/x-www-form-urlencoded)
- Paglikha ng valid na mga URL na may special characters o spaces
- Pag-encode ng mga non-ASCII na karakter sa mga URL
- Pagpapasa ng mga complex na parameter sa APIs at web services
Paano Gumagana ang URL Encoding
Ang pag-encode ng URL ay sumusunod sa mga prinsipyong ito:
- Nanatiling hindi nagbabago ang mga alphanumeric na karakter (A-Z, a-z, 0-9)
- Ang mga special characters tulad ng space, ?, &, =, %, + ay kino-convert sa kanilang percent-encoded na katumbas
- Bawat byte ng isang UTF-8 encoded na karakter ay percent-encoded nang hiwalay
- Maaaring i-encode ang space character bilang "%20" o "+" (sa query parameters)
- Ang mga reserved characters tulad ng /, :, ?, #, [ ay may espesyal na kahulugan sa mga URL at maaaring tratuhin nang iba depende sa kanilang konteksto
encodeURI vs encodeURIComponent
Nagbibigay ang JavaScript ng dalawang function para sa URL encoding:
- encodeURI: Nag-e-encode ng kumpletong URI, pinapanatili ang mga karakter na bahagi ng syntax ng URI (tulad ng /:?#[]@!$&'()*+,;=)
- encodeURIComponent: Nag-e-encode ng isang URI component (tulad ng halaga ng query parameter), nag-e-encode ng mas maraming karakter kabilang ang mga may espesyal na kahulugan sa isang URI
Para sa karamihan ng mga kaso kapag nag-e-encode ng input ng user o query parameters, encodeURIComponent()
ay ang mas ligtas na opsyon dahil tinitiyak nito na lahat ng posibleng problemadong karakter ay maayos na na-encode.
URL Encoding para sa mga International na Karakter
Ang mga modernong browser ay nag-e-encode ng mga non-ASCII na karakter gamit ang UTF-8 encoding at pagkatapos ay percent-encode ang bawat byte. Tinitiyak nito na ang mga international na karakter, emojis, at iba pang Unicode na simbolo ay maayos na maisasama sa mga URL. Halimbawa, ang Japanese na karakter na "日" ay unang na-UTF-8 encode bilang tatlong byte (E6 97 A5) at pagkatapos ay percent-encode bilang "%E6%97%A5".
Examples
Plain Text | URL Encoded |
---|---|
Hello World | Hello%20World |
https://example.com/?q=search term | https%3A%2F%2Fexample.com%2F%3Fq%3Dsearch%20term |
50% off sale! | 50%25%20off%20sale%21 |
Smith & Jones LLC | Smith%20%26%20Jones%20LLC |