از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تابع encodeURI جاوا اسکریپت در بسیاری از عمر جاوا اسکریپت، این یک زبان برنامه نویسی فقط مرورگر بود و نمی توانست اجرا شود. روی سمت سرور مثل الان که می تواند. به همین دلیل، JS دارای توابع داخلی زیادی است که مختص توابع سمت مرورگر هستند، مانند رشته های رمزگذاری برای استفاده در URL ها. برخی از رایج ترین …
برای بیشتر عمر جاوا اسکریپت، این یک زبان برنامه نویسی فقط مرورگر بود و نمی توانست اجرا شود روی سمت سرور مثل الان که می تواند. به همین دلیل، JS دارای توابع داخلی زیادی است که مختص توابع سمت مرورگر هستند، مانند رشته های رمزگذاری برای استفاده در URL ها. برخی از متداول ترین توابع مورد استفاده عبارتند از:
encodeURI
encodeURIComponent
decodeURI
decodeURIComponent
escape
unescape
تابعی که تمرکز این مقاله است، encodeURI
، برای رمزگذاری a استفاده می شود تعیین کننده هویت منابع یکشکل (URI) به طوری که کاراکترهایی که قرار نیست در یک URI استفاده شوند (مانند یک فاصله) به درستی قالب بندی شوند. این شخصیت ها با استفاده از آنها فرار می کنند درصد رمزگذارییا کدگذاری URL، برای نشان دادن کاراکترهای URI غیر استاندارد.
رمزگذاری درصد به سادگی یک نمایش هگزادسیمال از نویسه ASCII است که با کاراکتر درصد (%) پیشوند شده است. بنابراین، برای مثال، نمایش درصد رمزگذاری علامت تعجب (!) است %21
زیرا 21 عدد هگز اسکی برای علامت تعجب است.
از نظر موارد استفاده، فرض کنید وب سایت شما دارای یک نوار جستجو است و پرس و جوهای وارد شده در آنجا برای ساخت یک URL مانند زیر استفاده می شود:
https://mysite.com/q=(SEARCH_QUERY)
در مواردی مانند این، به احتمال زیاد کاربر رشتهای حاوی فاصله (یا سایر نویسههای رزرو شده) را وارد میکند که در URLها مجاز نیست. بنابراین اگر کاربر مثلاً رشته «توسعه وب» را وارد کند، چه کار کنیم؟ ما نمیتوانیم فقط به هر کاراکتری در URL خود اجازه دهیم. آنجاست encodeURI
جلو می آید:
> let query = 'web development';
> let searchUrl = 'https://mysite.com/q=' + query;
> encodeURI(searchUrl)
'https://mysite.com/q=web%20development'
توجه کنید که چگونه فضا با رمزگذاری درصد جایگزین شده است، %20
. این encodeURI
عملکرد برای این کار عالی است زیرا از هیچ کاراکتر رزرو شده دیگری مانند کولون یا اسلش جلو فرار نمی کند. این به این دلیل است که برخلاف URL انتظار دارد یک URL کامل را به عنوان ورودی دریافت کند encodeURIComponent
تنوع این تابع نشانی اینترنتی ارسال شد به encodeURI
میتواند شامل هر بخش معتبری از طرح URL باشد و از آن خارج نشود، در حالی که سایر کاراکترهای رزرو شده یا غیرمجاز کدگذاری میشوند:
> encodeURI('https://scott:(email protected):443/my/file.html؟stack=abuse#javascript')
'https://scott:(email protected):443/my/file.html؟stack=abuse#javascript'
> encodeURI('https://scott:(email protected):443/my/file.html؟stack="abuse"#javascript')
'https://scott:(email protected):443/my/file.html؟stack=%22abuse%22#javascript'
توجه داشته باشید که چگونه در اولین تماس بالا هیچ تغییری در URL ایجاد نشد. این به این دلیل است که همه کاراکترها در یک URL معتبر هستند. در فراخوانی دوم چند علامت نقل قول داریم که معتبر نیستند و در نتیجه کدگذاری شده اند.
شخصیت های زیر هستند نه کد گذاری شده توسط encodeURI
، صرف نظر از جایی که آنها در URL قرار دارند: A-Za-z0-9;,/?:@&=+$-_.!~*'()#
این تابع حتی می تواند با استفاده از رمزگذاری طولانی تر مبتنی بر UTF-8، کاراکترهای غیر ASCII را رمزگذاری کند. به عنوان مثال، نماد ارز یورو (€) با استفاده از سه مجموعه رمزگذاری درصد رمزگذاری شده است:
> encodeURI('€')
'%E2%82%AC'
این اجازه می دهد تا کاراکترهای هر زبان یا نویسه های قالب بندی خاص از طریق URL ها منتقل شوند.
نتیجه
جاوا اسکریپت داخلی encodeURI
این تابع برای قالب بندی صحیح URL ها یا به طور کلی تر، URI هایی با کاراکترهای ASCII بدون رزرو یا حتی کاراکترهای UTF-8 مفید است. هر زمانی که از ورودی کاربر در ساخت یک URL استفاده می شود، باید از آن استفاده شود تا اطمینان حاصل شود که فرمت صحیح آن باقی می ماند.
از طرف دیگر، ما نیز آن را داریم decodeURI
تابع داخلی، که رمزگشایی مقادیر درصد رمزگذاری شده را انجام می دهد، که در مقاله دیگری به آن نگاهی خواهیم انداخت.
(برچسبها برای ترجمه)# جاوا اسکریپت
منتشر شده در 1403-01-22 22:43:05