← Բոլոր գործիքները

URL կոդավորում և ապակոդավորում

Percent-կոդավորեք և ապակոդավորեք URL-ներն ու տեքստը ուղղակիորեն ձեր բրաուզերում։ Հասկացեք վերապահված նիշերը, encodeURI և encodeURIComponent մեթոդները, մշակված տեղում։

URL կոդավորում և վերծանում՝ բացատրված ծրագրավորողների համար

Մուտքագրեք բացատ URL-ում, կամ հայերեն բառ, կամ գումարման նշան, որը պատկանում է ձեր տվյալներին, ոչ թե հասցեին ինքնին, և ինչ-որ բան պետք է զիջի։ Վեբը երաշխավորում է անվտանգ փոխադրում միայն ASCII նիշերի փոքր, կանխատեսելի բազմության համար։ Ամեն ինչ մյուսը պետք է փաթաթված լինի ձևաչափով, որի հետ համաձայն են բոլոր երթուղիչները, սերվերներն ու բրաուզերները։ Այդ ձևաչափը պրոցենտային կոդավորումն է, ավելի հաճախ կոչվում է URL կոդավորում, և այս էջը թույլ է տալիս փոխակերպել տեքստը երկու ուղղությամբ էլ, ուղղակիորեն ձեր բրաուզերում։

Փայլող URL ուղի, որը լուծարվում է պրոցենտային կոդավորված տասնվեցական նիշերի, մուգ ինդիգո ֆոնի վրա
URL ուղին փոխակերպվում է անվտանգ պրոցենտային կոդավորված եռյակների։

Ինչ իրականում է պրոցենտային կոդավորումը

Կանոնը մեխանիկական է և հեշտ հետևելի։ Ցանկացած նիշ, որը չի կարող հայտնվել բառացիորեն, փոխարինվում է % նշանով, որին հաջորդում է երկու տասնվեցական թվանշան, որոնք ցույց են տալիս այդ նիշի բայթի արժեքը։ Բացատը դառնում է %20։ Գումարման նշանը դառնում է %2B։ Համարանիշը դառնում է %23։ Երբ նիշը համապատասխանում է մի քանի բայթի, ինչպես ոչ-ASCII տեքստի մեծ մասը UTF-8-ի ներքո, պարզապես ստանում եք մի քանի եռյակ իրար ետևից. եվրոյի նշանը դառնում է %E2%82%AC։ Վերծանումն այս գործընթացը հակադարձում է՝ ամեն եռյակը կարդալով հետ դեպի իր բնօրինակ բայթը։

Այս պայմանավորվածությունը սահմանված է URI սպեցիֆիկացիայում (RFC 3986), և այն միտումնավոր ձանձրալի է։ Ձանձրալին էլ կարևորն է։ Երկրագնդի յուրաքանչյուր լավ վարվող HTTP հաճախորդ և սերվեր իրագործում է նույն կանոնները, այնպես որ ճիշտ կոդավորված հղումը մի տեղում ամբողջական է ժամանում ամենուր։

Ինչու՞ պետք է գոյություն ունենա

URL-ները կրում են երկու տեսակի նիշեր՝ շատ տարբեր դերերով։ Վերապահված նիշերը, ինչպիսիք են /, ?, #, &, = և :, կառուցվածքային են։ Դրանք վերլուծիչին ասում են, թե որտեղ է ավարտվում ուղին և սկսվում հարցման տողը, կամ որտեղ է ավարտվում մեկ պարամետրը և սկսվում հաջորդը։ Եթե ձեր իրական տվյալները պարունակում են այդ նշաններից մեկը, դա պետք է կոդավորվի, որպեսզի վերլուծիչը այն կետադրական նշան չհամարի։ A&B/2024 պիսի պատվերի հղումը, հում ձևով տեղադրված հարցման տողում, կսխալ մեկնաբանվի որպես երկու պարամետր և ուղու հատված։

Ապա կան անվտանգ չափանիշներից դուրս և ոչ-ASCII նիշեր. բացատներ, չակերտներ, անկյունային փակագծեր, շեշտադրված տառեր, էմոջիներ, ամեն ինչ, որ դուրս է սովորական ASCII տիրույթից։ Դրանք բառացիորեն URL-ում հայտնվելու գործ չունեն, կամ դրանք խեղաթյուրվում են փոխադրման ընթացքում, կամ դրանք չունեն սահմանված ներկայացում։ Դրանք կոդավորելը հղումները մաքուր և կանխատեսելի է պահում, ոչ թե պատահականությանն է թողնում արդյունքը։

Որտեղ է դա հանդիպում իրական աշխատանքում

Հարցման տողերը դասական դեպքն են։ Յուրաքանչյուր արժեք, որը կցում եք ?key=...-ին, պետք է կոդավորվի, որպեսզի օգտատիրոջ մուտքագրումը չկարողանա կոտրել կառուցվածքը։ Նույնը վերաբերում է HTML ձևերի ուղարկմանը application/x-www-form-urlencoded ձևով, երբ բրաուզերն ինքնաբերաբար կոդավորում է դաշտի արժեքները (և, պատմական սովորության համաձայն, բացատները դարձնում է +, ոչ թե %20)։ Կհանդիպեք դրան նաև ոչ-լատինական վերնագրով էջեր ցույց տվող հղումներ կառուցելիս, API հարցումներ ձեռքով ստեղծելիս, վերահղման նպատակակետեր որպես պարամետրեր փոխանցելիս, և կարգաբերելիս, թե ինչու հասցեագոտում լավ երևացող հարցումը սերվերում ժամանում է աղավաղված։

Հոսող տվյալների հոսք, որն անվտանգ անցնում է փայլող երկնագույն և ոսկեգույն խողովակով՝ խորհրդանշելով URL կոդավորումը
Կոդավորումը թույլ է տալիս կամայական տեքստին անվտանգ ճանապարհորդել ցանցով։

encodeURI ընդդեմ encodeURIComponent-ի

JavaScript-ը երկու կոդավորիչ է առաջարկում, և սխալ մեկն ընտրելը տարածված սխալ է։ Տարբերությունը շրջանակի մասին է։ encodeURIComponent-ը նախատեսված է մեկ առանձին տվյալի, ինչպիսին է մեկ հարցման արժեքը։ Այն կոդավորում է համարյա ամեն ինչ, այդ թվում՝ վերապահված նիշերը /, ?, :, @, &, =, + և #։ Հենց դա է ձեզ պետք, երբ տվյալները թույլատրված են պարունակել այդ նշանները որպես սովորական տեքստ։

encodeURI-ն նախատեսված է ամբողջական հասցեի, որը ցանկանում եք պահել աշխատունակ։ Այն կառուցվածքային նիշերին չի դիպչում, այնպես որ URL-ը միասին պահող թեք գծիկները, երկկետերն ու հարցական նշանները մնում են։ Օգտագործեք այն, երբ ունեք ամբողջական URL և ուզում եք միայն մաքրել բացատներն ու ոչ-ASCII նիշերը. դիմեք encodeURIComponent-ին, երբ արժեք եք տեղադրում ավելի մեծ URL-ի մեջ։ Պարզ կանոն. կոդավորեք ամբողջ հղումը encodeURI-ով, կոդավորեք ձեր տեղադրած մասերը encodeURIComponent-ով։

Ամեն ինչ մնում է ձեր սարքում

Այս գործիքն ամբողջովին աշխատում է ձեր բրաուզերում։ Ձեր տեղադրած տեքստը կոդավորվում կամ վերծանվում է տեղական, նույն ստանդարտ ընթացակարգերով, և երբեք չի ճանապարհորդում սերվեր, ինչը այն անվտանգ է դարձնում տոկենների, ստորագրված պարամետրերի կամ ցանկացած այլ բանի համար, որը դուք ցանկանում եք չուղարկել ցանցով։ Եթե աշխատում եք այլ տեքստային փոխակերպումների հետ, Base64 փոխակերպիչը հենց կողքին է, և կարող եք զննել ամբողջ ծրագրավորողի գործիքների հավաքածուն՝ ամենօրյա այլ օգնականների համար։

Հաճախակի տրվող հարցեր

Ի՞նչ է նշանակում %20-ը URL-ում

Դա կոդավորված բացատ է։ Բացատ նիշը թույլատրված չէ URL-ում բառացիորեն, այնպես որ այն փոխարինվում է պրոցենտային նշանով և 20 տասնվեցական արժեքով, որը բացատի բայթի արժեքն է։

Ինչու՞ եմ երբեմն տեսնում գումարման նշան %20-ի փոխարեն

application/x-www-form-urlencoded տիպի HTML ձևի տվյալները բացատները կոդավորում են գումարման նշանով՝ պատմական սովորության համաձայն։ Սովորական ուղում կամ հարցման տողում բացատը կոդավորվում է %20-ով։ Երկուսն էլ իրենց ճիշտ համատեքստում հակադարձ վերծանվում են բացատի։

Ե՞րբ պետք է օգտագործեմ encodeURIComponent-ը encodeURI-ի փոխարեն

Օգտագործեք encodeURIComponent-ը URL-ի մեջ տեղադրվող մեկ առանձին արժեքի համար, ինչպիսին է հարցման պարամետրը, քանի որ այն կոդավորում է նաև վերապահված նիշերը։ Օգտագործեք encodeURI-ն ամբողջական հասցեի համար, երբ ցանկանում եք պահպանել այն կապող թեք գծիկները, երկկետերն ու հարցական նշանները։

URL կոդավորումը փոխու՞մ է իմ տվյալների իմաստը

Ոչ։ Կոդավորումն ամբողջովին շրջելի է։ Արդյունքի վերծանումը հետ է տալիս ճշգրիտ բնօրինակ տեքստը, բայթ առ բայթ, քանի դեռ երկու ծայրերում էլ օգտագործվում է նույն նիշային բազմությունը։

Ինչպե՞ս են մշակվում ոչ-ASCII նիշերը, ինչպիսիք են շեշտադրված տառերը կամ էմոջիները

Դրանք նախ վերածվում են UTF-8 բայթերի, ապա յուրաքանչյուր բայթ դառնում է իր սեփական պրոցենտային եռյակը։ Մեկ շեշտադրված տառ կամ էմոջի հետևաբար կարող է ընդարձակվել մի քանի եռյակի կոդավորված ելքում։

Իմ տեքստը ուղարկվու՞մ է սերվեր, երբ օգտագործում եմ այս գործիքը

Ոչ։ Կոդավորումն ու վերծանումն ամբողջովին տեղի են ունենում ձեր բրաուզերում։ Ինչ էլ տեղադրեք, չի վերբեռնվում, այնպես որ այն անվտանգ է օգտագործել գաղտնի կամ զգայուն տողերի հետ։