Kujenga thamani za query-string
Ingizo lolote la mtumiaji unaloweka katika ?q=... lazima lisimbwe kwa hali ya Component. Hali ya URI ingeacha = na & wazi, ikivunja URL yako wakati thamani ina herufi hizo.
Simba maandishi yoyote kuwa mfuatano salama wa URL ulio na percent-encoding, au simbua URL iliyosimbwa kurudi kwa maandishi ya kawaida. Hakiki ya wakati halisi, salama kwa UTF-8, na inafanya kazi yote ndani ya kivinjari chako.
Component (encodeURIComponent) hubadilisha kila kitu kisicho herufi ya unreserved — salama zaidi kwa thamani za query-string, sehemu za njia, au sehemu yoyote moja. URI (encodeURI) huhifadhi herufi za muundo wa URL (:/?#=&) — itumie kwenye URL kamili. Fomu (application/x-www-form-urlencoded) ni Component pamoja na nafasi kuwa '+' — ndio fomu za HTML hutumia.
RFC 3986 inafafanua seti ya herufi za "unreserved" ambazo hazihitaji usimbaji: A-Z a-z 0-9 - _. ~. Kingine chochote kinapatiwa percent-encoding. encodeURIComponent zaidi husimba :/?#&= ambazo encodeURI huziacha. Tofauti hii ina umuhimu unaposimba thamani ya query dhidi ya URL kamili.
Dondosha faili la maandishi hapa, au bofya kuvinjari
Faili lolote la maandishi la UTF-8:.txt,.csv,.json,.url,.log
Haraka, sahihi, kivinjari pekee — imetengenezwa kwa wasanidi programu, waandishi, na yeyote anayetatua URL.
Chagua hali ya Component, URI Kamili, au Fomu kulingana na unachosimba — thamani za query-string, URL kamili, au mzigo wa fomu ya HTML.
Kila usimbaji na usimbuaji hutokea ndani ya kivinjari chako kwa kutumia JavaScript asilia. Maandishi na URL zako hazitoki kifaa chako kamwe.
Matokeo yanasasishwa kwa kila ubonyezaji wa kibodi — hakuna kitufe cha "Simba" cha kubofya, hakuna safari ya kwenda na kurudi kwa seva.
Emoji, herufi za CJK, herufi za Kilatini zenye lafudhi, na za Kisirili zinasafiri kikamilifu kupitia encodeURIComponent na kurudi.
Wakati wa kusimbua, chagua kutibu '+' kama nafasi — ndio kanuni ambayo fomu za HTML hutumia chini ya application/x-www-form-urlencoded.
Dondosha faili la.txt,.csv, au.json ili kusimba au kusimbua kwa hatua moja. Matokeo yanapakuliwa kama.txt safi.
API tatu asilia za kivinjari, hali tatu, zote zikifanya kazi ndani ya ukurasa unaousoma.
Kwa kila ubonyezaji wa kibodi, mfuatano wa ingizo unapelekwa kwa kazi ndogo ya JavaScript. Hakuna debounce, hakuna wito wa API, hakuna fetch — kazi inafanya kazi kwa usawazishaji ndani ya kichupo chako cha kivinjari.
Component inaita encodeURIComponent — inabadilisha kila kitu kisicho A-Z a-z 0-9 - _. ~. URI inaita encodeURI — inahifadhi :/?#=& ili URL kamili ibaki halali. Fomu hutumia encodeURIComponent na kubadilisha nafasi na + kulingana na application/x-www-form-urlencoded.
encodeURIComponent na encodeURI ndani huzigeuza mifuatano kuwa baiti za UTF-8 kabla ya kufanya percent-encoding kwa kila baiti isiyo salama. Hiyo ina maana %E4%B8%AD kwa Kichina 中 — sawa kabisa na ambayo RFC 3986 inahitaji.
Matokeo yanawekwa kama thamani ya kusoma tu ya matokeo. Bofya Nakili kuyaweka kwenye ubao wako wa kunakili kupitia navigator.clipboard.writeText, au Pakua kuyahifadhi kama .txt kupitia URL ya Blob — vyote vinabaki ndani ya kivinjari chako.
Hali halisi ambapo hali sahihi ya usimbaji huzuia hitilafu.
Ingizo lolote la mtumiaji unaloweka katika ?q=... lazima lisimbwe kwa hali ya Component. Hali ya URI ingeacha = na & wazi, ikivunja URL yako wakati thamani ina herufi hizo.
Baadhi ya programu za gumzo na PDF huharibu viungo vinapokuwa na nafasi mbichi au herufi zisizo za ASCII. Pitisha URL kupitia hali ya URI ili iwe salama kunakili-bandika kila mahali.
Wakati API yako inakataa ombi, bandika URL kwenye hali ya Simbua kuona kile seva ilichokiona kweli. Thamani zilizosimbwa mara mbili (ambapo % yenyewe ilisimbwa kama %25) huonekana mara moja.
Wakati wa kutatua mizigo ya POST katika application/x-www-form-urlencoded, simbua na chaguo la "+ kama nafasi" likiwa limewashwa. Hiyo ndio kanuni vivinjari hutumia, na kuisahau ni sababu kuu ya hitilafu za "kwa nini jina la mtumiaji wangu linaonekana na alama za kuongeza".
URL unazosimba mara nyingi zina barua pepe halisi za wateja, vitambulisho, au tokeni za kikao — ndio aina ya data ambayo hutaki kuibandika kwenye zana ya seva ya mgeni. iKit URL Encoder inafanya kazi kama JavaScript ambayo tayari imepakiwa katika kivinjari chako, hivyo ingizo halitoki kichupo chako kamwe.
fetch, XHR, au beacon wakati wa kusimba au kusimbua.
Mafunzo ya kina na ulinganishaji wa zana kutoka blogu ya iKit.
The 30-year-old form-encoding quirk explained — when + means space, when it means literal +, and how to fix the email-with-plus bug.
When to reach for Base64 versus URL percent-encoding, and what each encoding actually solves.
Pretty-print, validate, and structurally diff messy JSON in any browser.
Component (encodeURIComponent) hubadilisha kila kitu kisicho herufi ya unreserved — salama zaidi kwa thamani za query-string, sehemu za njia, au sehemu yoyote moja. URI (encodeURI) huhifadhi herufi za muundo wa URL (:/?#=&) — itumie kwenye URL kamili. Fomu (application/x-www-form-urlencoded) ni Component pamoja na nafasi kuwa '+' — ndio fomu za HTML hutumia.
RFC 3986 inafafanua seti ya herufi za "unreserved" ambazo hazihitaji usimbaji: A-Z a-z 0-9 - _. ~. Kingine chochote kinapatiwa percent-encoding. encodeURIComponent zaidi husimba :/?#&= ambazo encodeURI huziacha. Tofauti hii ina umuhimu unaposimba thamani ya query dhidi ya URL kamili.
Sababu tatu za kawaida: (1) asilia ilikuwa imesimbwa kwa Fomu hivyo '+' inapaswa kutibiwa kama nafasi — washa chaguo hilo. (2) Imesimbwa mara mbili — ingizo lilisimbwa mara mbili; simbua tena. (3) Mfuatano usio sahihi wa percent — % iliyopotea isiyofuatiwa na nambari mbili za hex. Angalia ujumbe wa hitilafu kwa nafasi kamili ya baiti.
Ndio kwa hali ya Component — tunaita encodeURIComponent moja kwa moja. Hali ya Fomu inaongeza marekebisho ya kawaida ya form-encoding (! ' * zinakuwa %21 %27 %28 %29 %2A) kulingana na RFC 3986 + WHATWG. Hali ya URI inaita encodeURI, ambayo ndio lugha nyingi humaanisha 'percent-encode a URL'.
Hapana. Zana yote ni JavaScript ndani ya ukurasa huu — usimbaji na usimbuaji hutokea ndani ya kivinjari chako. Unaweza kuthibitisha kwa kufungua DevTools → Network na kutazama: hakuna maombi yanayotumwa wakati wa shughuli za usimbaji au usimbuaji.