Usimbaji na Ufunguaji wa URL, Ulioelezwa kwa Wasanidi Programu
Andika nafasi katika URL, au neno la Kisiriliki, au alama ya "na" inayohusiana na data yako badala ya anwani yenyewe, na kitu lazima kikubali. Wavuti huhakikishia usafirishaji salama kwa seti ndogo, inayotabirika ya herufi za ASCII pekee. Kila kitu kingine lazima kifungwe kwa umbo ambalo ruta, seva na vivinjari vyote vinakubaliana. Umbo hilo ni usimbaji wa asilimia, unaoitwa kwa kawaida zaidi usimbaji wa URL, na ukurasa huu unakuruhusu kubadilisha maandishi kwa pande zote mbili moja kwa moja ndani ya kivinjari chako.

Usimbaji wa asilimia ni nini hasa
Kanuni ni ya kimfumo na rahisi kufuata. Herufi yoyote isiyoweza kuonekana kwa hali yake halisi hubadilishwa na alama ya % ikifuatiwa na tarakimu mbili za heksadesimali zinazoelezea thamani ya baiti ya herufi hiyo. Nafasi hubadilika kuwa %20. Alama ya kuongeza hubadilika kuwa %2B. Alama ya namba hubadilika kuwa %23. Wakati herufi inalingana na baiti kadhaa, kama maandishi mengi yasiyo ya ASCII yanavyofanya chini ya UTF-8, unapata tu vikundi kadhaa mfululizo: alama ya euro hubadilika kuwa %E2%82%AC. Kufungua hurudisha mchakato, kikisoma kila kikundi kirudi kuwa baiti yake asili.
Desturi hii imefafanuliwa katika kiwango cha URI (RFC 3986) na kwa makusudi ni ya kawaida. Ukawaida ndio lengo. Kila mteja na seva ya HTTP inayofanya kazi vizuri duniani hutekeleza kanuni zile zile, hivyo kiungo kilichosimbwa kwa usahihi mahali pamoja hufika kikiwa kizima kila mahali pengine.
Kwa nini lazima kiwepo
URL hubeba aina mbili za herufi zenye kazi tofauti sana. Herufi zilizohifadhiwa kama /, ?, #, &, = na : ni za kimuundo. Huambia kichunguzi mahali njia inapoishia na mfuatano wa hoja unapoanza, au mahali hoja moja inapoisha na inayofuata kuanza. Ikiwa data yako halisi ina moja ya alama hizo, lazima isimbwe ili kichunguzi kisiikosee kuwa alama ya uandishi. Rejeleo la agizo kama A&B/2024 lililowekwa ghafi katika mfuatano wa hoja lingesomwa vibaya kama hoja mbili na sehemu ya njia.
Kisha kuna herufi zisizo salama na zisizo za ASCII: nafasi, alama za nukuu, mabano ya pembe, herufi zenye lafudhi, emoji, chochote kilicho nje ya wigo wa ASCII wa kawaida. Hizi hazina sababu ya kuonekana halisi katika URL, ama kwa sababu huharibika wakati wa usafirishaji au kwa sababu hazina uwakilishi uliobainishwa. Kuzisimba huweka viungo safi na vinavyotabirika badala ya kuacha matokeo kwa bahati nasibu.
Mahali inapojitokeza katika kazi halisi
Mfuatano wa hoja ni mfano wa kawaida. Kila thamani unayoongeza kwenye ?key=... inapaswa kusimbwa ili data ya mtumiaji isiweze kuvunja muundo. Kanuni ile ile inatumika kwa uwasilishaji wa fomu za HTML zinazotumwa kama application/x-www-form-urlencoded, ambapo kivinjari husimba thamani za sehemu kiotomatiki (na, kwa desturi ya kihistoria, hubadilisha nafasi kuwa + badala ya %20). Utakutana nayo pia wakati wa kujenga viungo vinavyoelekeza kwenye kurasa zenye majina yasiyo ya Kilatini, wakati wa kujenga maombi ya API kwa mkono, wakati wa kupitisha malengo ya kuelekeza upya kama hoja, na wakati wa kutatua kwa nini ombi linaloonekana sahihi katika sehemu ya anwani hufika limeharibika kwenye seva.

encodeURI dhidi ya encodeURIComponent
JavaScript hutoa visimbaji viwili, na kuchagua kibaya ni hitilafu ya kawaida. Tofauti ni kuhusu wigo. encodeURIComponent ni kwa kipande kimoja cha data, kama thamani moja ya hoja. Husimba karibu kila kitu, ikiwa ni pamoja na herufi zilizohifadhiwa /, ?, :, @, &, =, + na #. Hilo ndilo hasa unalotaka wakati data inaruhusiwa kuwa na alama hizo kama maandishi ya kawaida.
encodeURI ni kwa anwani nzima unayokusudia kuiendeleza ikifanya kazi. Huacha herufi za kimuundo bila kuguswa, hivyo mistari, koloni na alama za maswali zinazoshikilia URL pamoja hubaki salama. Itumie unapokuwa na URL kamili na unataka tu kusafisha nafasi au herufi zisizo za ASCII; tumia encodeURIComponent wakati wowote unapoingiza thamani ndani ya URL kubwa zaidi. Kanuni rahisi ya kukumbuka: simba kiungo kizima kwa encodeURI, simba vipande unavyoingiza kwa encodeURIComponent.
Kila kitu kinabaki kwenye kompyuta yako
Chombo hiki hufanya kazi kabisa ndani ya kivinjari chako. Maandishi unayobandika husimbwa au kufunguliwa ndani kwa taratibu zile zile za kawaida na haisafiri kamwe kwenye seva, jambo linalofanya iwe salama kwa tokeni, hoja zilizotiwa saini, au chochote kingine ambacho ungependelea kutotuma kupitia mtandao. Ikiwa unafanya kazi na ubadilishaji mwingine wa maandishi, kibadilishi cha Base64 kiko karibu nacho, na unaweza kuvinjari seti kamili ya vifaa vya wasanidi programu kwa vifaa vingine vya kila siku.
Maswali yanayoulizwa mara kwa mara
%20 inamaanisha nini katika URL?
Ni nafasi iliyosimbwa. Alama ya nafasi haruhusiwi halisi katika URL, hivyo hubadilishwa na alama ya asilimia na thamani ya heksadesimali 20, ambayo ni thamani ya baiti ya nafasi.
Kwa nini wakati mwingine naona alama ya kuongeza badala ya %20?
Data ya fomu ya HTML ya aina application/x-www-form-urlencoded husimba nafasi kama alama ya kuongeza kwa desturi ya kihistoria. Katika njia au hoja ya kawaida, nafasi husimbwa kama %20. Zote mbili hufunguliwa kurudi kuwa nafasi katika muktadha wake sahihi.
Ni lini nitumie encodeURIComponent badala ya encodeURI?
Tumia encodeURIComponent kwa thamani moja unayoingiza ndani ya URL, kama hoja ya swali, kwa sababu husimba herufi zilizohifadhiwa pia. Tumia encodeURI kwa anwani kamili unapotaka kuhifadhi mistari, koloni na alama za maswali zinazoishikilia pamoja.
Je, usimbaji wa URL hubadilisha maana ya data yangu?
Hapana. Usimbaji unaweza kurudishwa kikamilifu. Kufungua matokeo hurudisha maandishi asili kwa usahihi, baiti kwa baiti, mradi seti moja ya herufi inatumika pande zote mbili.
Herufi zisizo za ASCII kama lafudhi au emoji hushughulikiwaje?
Kwanza hubadilishwa kuwa baiti za UTF-8, kisha kila baiti kuwa kikundi chake cha asilimia. Herufi moja yenye lafudhi au emoji hivyo inaweza kupanuka kuwa vikundi kadhaa katika matokeo yaliyosimbwa.
Je, maandishi yangu hutumwa kwa seva ninapotumia chombo hiki?
Hapana. Usimbaji na ufunguaji hufanyika kabisa ndani ya kivinjari chako. Hakuna unachobandika kinachopakiwa, hivyo ni salama kutumia na mifuatano ya faragha au nyeti.
