نحوه استفاده
- Encode یا Decode را انتخاب کنید.
- برای یک مقدار تکی (مانند یک پارامتر کوئری) حالت Component و برای یک آدرس کامل حالت Full URL را انتخاب کنید.
- متن را تایپ یا جایگذاری کنید. نتیجه بلافاصله در سمت راست (یا در موبایل، پایین) ظاهر میشود.
- نتیجه را کپی کنید یا با «استفاده از خروجی بهعنوان ورودی» عملیات را معکوس کنید و رفت و برگشت را بررسی کنید.
نحوه کار
نشانیهای URL فقط میتوانند مجموعهٔ محدودی از نویسههای ASCII را شامل شوند. هر چیز دیگر، از جمله فاصله، حروف اِعرابدار و ایموجی، بهصورت رمزگذاری درصدی نوشته میشود: نویسه به بایتهای UTF-8 تبدیل میشود و هر بایت بهصورت % و دو رقم شانزدهدهی درمیآید. فاصله به %20، é به %C3%A9 و € به %E2%82%AC تبدیل میشود.
حالت Component از encodeURIComponent و decodeURIComponent جاوااسکریپت استفاده میکند. این حالت هر نویسه را که در URL معنای خاصی دارد، از جمله / ? # & = + : و @ را رمزگذاری میکند؛ بنابراین نتیجه را میتوان با خیال راحت داخل مقدار یک پارامتر کوئری یا یک بخش از مسیر قرار داد. فقط نویسههای A–Z، a–z، 0–9 و - _ . ! ~ * ' ( ) بدون تغییر میمانند.
حالت Full URL از encodeURI و decodeURI استفاده میکند. این حالت فرض میکند ورودی از قبل یک URL کامل است و نویسههای رزروشدهٔ ; , / ? : @ & = + $ # را دستنخورده باقی میگذارد تا آدرس به کار خود ادامه دهد. هنگام رمزگشایی نیز decodeURI از تغییر این نویسههای رزروشده صرفنظر میکند: %2F بهصورت %2F باقی میماند، زیرا تبدیل آن به / معنی URL را تغییر میدهد.
گزینهٔ form-data از قالب application/x-www-form-urlencoded پیروی میکند؛ همان قالبی که مرورگرها هنگام ارسال فرمهای HTML استفاده میکنند: فاصله بهجای %20 بهصورت + نوشته میشود. هنگام رمزگشایی با این گزینه، هر + به فاصله تبدیل میشود؛ علامت + واقعی نیز باید بهصورت %2B نوشته شود.
ورودی نامعتبر هرگز دور ریخته نمیشود. اگر % با دو رقم شانزدهدهی دنبال نشود، یا دنبالهای از رمزگذاریها UTF-8 معتبر نسازد، ابزار محل مشکل را نشان میدهد و متن شما را نگه میدارد تا بتوانید آن را اصلاح کنید.
نمونهها
قرار دادن یک مقدار در رشتهٔ کوئری
برای جستوجوی «Rock & Roll» در https://example.com/search?q=…، فقط مقدار را در حالت Component رمزگذاری کنید: Rock%20%26%20Roll. بدون رمزگذاری، & پارامتر q را میبندد و پارامتر جدیدی به نام « Roll» آغاز میکند.
اصلاح یک URL دارای فاصله و حروف اِعرابدار
در حالت Full URL، https://example.com/menu/crème brûlée.html به https://example.com/menu/cr%C3%A8me%20br%C3%BBl%C3%A9e.html تبدیل میشود. اسلشها و دونقطه همانطور که هستند باقی میمانند؛ بنابراین پیوند همچنان کار میکند.
خواندن دادههای ثبتشدهٔ فرم
گزارش سرور name=Jane+Doe&city=S%C3%A3o+Paulo را نشان میدهد. آن را در حالت Component با فعال بودن «+ را بهعنوان فاصله در نظر بگیر» رمزگشایی کنید تا name=Jane Doe&city=São Paulo خوانده شود.
پرسشهای متداول
تفاوت بین encodeURI و encodeURIComponent چیست؟
encodeURIComponent نویسههایی را که بخشهای URL را جدا میکنند (/ ? # & = + : @ و موارد دیگر) رمزگذاری میکند؛ بنابراین برای یک بخش از URL مناسب است. encodeURI آن نویسهها را نگه میدارد؛ بنابراین برای URL کامل مناسب است. استفاده از encodeURI برای مقدار کوئری یک اشکال رایج است: & یا = داخل مقدار رمزگذاری نمیشود و رشتهٔ کوئری را خراب میکند.
آیا فاصله باید %20 باشد یا +؟
در مسیر URL، فاصله همیشه %20 است. در رشتهٔ کوئری هر دو دیده میشوند: %20 همهجا معتبر است، اما + فقط در دادههای کدگذاریشدهٔ فرم (application/x-www-form-urlencoded) به معنای فاصله است؛ یعنی همانطور که فرمهای HTML و بسیاری از چارچوبهای سرور رشتهٔ کوئری را میخوانند. اگر مطمئن نیستید، از %20 استفاده کنید.
چرا هنگام رمزگشایی خطا میگیرم؟
رمزگشایی وقتی خطا میدهد که علامت % با دو رقم هگزادسیمال دنبال نشده باشد (مثلاً «50% off»)، یا وقتی بایتهای اسکیپشده UTF-8 معتبر نباشند؛ این معمولاً یعنی متن با مجموعهنویسهٔ قدیمیتری مانند Latin-1 کدگذاری شده است (é بهصورت %E9 بهجای %C3%A9). پیام خطا موقعیت مشکل را نشان میدهد.
چرا %2F در حالت Full URL به اسلش تبدیل نشد؟
decodeURI عمداً کدگذاری نویسههای رزرو مانند / ? # & و = را حفظ میکند، زیرا رمزگشایی آنها میتواند نحوهٔ تقسیم URL به بخشها را تغییر دهد. برای رمزگشایی همهٔ کدگذاریها از حالت Component استفاده کنید.
کدام نویسهها هرگز کدگذاری نمیشوند؟
هر دو حالت نویسههای A–Z، a–z، 0–9 و - _ . ! ~ * ' ( ) را بدون تغییر باقی میگذارند. حالت Full URL علاوه بر آن، نویسههای ; , / ? : @ & = + $ و # را بدون تغییر باقی میگذارد.
حریم خصوصی
رمزگذاری و رمزگشایی کاملاً در مرورگر شما و با توابع داخلی JavaScript انجام میشوند. متن و URLهای شما بارگذاری، ذخیره یا در تحلیلها استفاده نمیشوند.