رمزگذار / رمزگشای URL

URL یا هر متنی را فوراً رمزگذاری یا رمزگشایی کنید؛ با حالت‌های رمزگذاری مؤلفه، URL کامل و فرم.

ابزارهای توسعه‌دهنده رایگان

دربارهٔ این ابزار

این کدگذار/رمزگشای URL چه کاری انجام می‌دهد

URLها فقط می‌توانند مجموعه محدودی از نویسه‌ها را با اطمینان در خود جای دهند؛ بنابراین هر چیز دیگری — مانند فاصله‌ها، حروف دارای اَعراب و نمادهایی مثل & یا # — پیش از قرار گرفتن ایمن در رشتهٔ پرس‌وجو، بخش مسیر یا ارسال فرم، به‌صورت درصدی رمزگذاری می‌شود (و به چیزهایی مانند %20 یا %C3%A9 تبدیل می‌شود). این ابزار متن را در هر دو جهت تبدیل می‌کند و به شما امکان می‌دهد حالت رمزگذاری متناسب با چیزی را که می‌سازید انتخاب کنید؛ زیرا «رمزگذاری یک URL» بسته به زمینه، معناهای کمی متفاوتی دارد.

نحوه استفاده

  • یک حالت را انتخاب کنید: مؤلفه برای یک مقدار منفرد که قرار است در پارامتر رشته پرس‌وجو قرار بگیرد (همه‌چیز، از جمله &، = و /، را کدگذاری می‌کند)؛ نشانی اینترنتی کامل برای کدگذاری یک URL کامل، در حالی که نویسه‌های ساختاری آن مانند / و ? بدون تغییر باقی می‌مانند؛ یا فرم برای سبک application/x-www-form-urlencoded که در ارسال فرم‌های HTML استفاده می‌شود و در آن فاصله‌ها به + تبدیل می‌شوند، نه %20.
  • در هرکدام از دو کادر تایپ یا جای‌گذاری کنید — متن ساده در سمت کدگذاری‌شده کدگذاری می‌شود و تایپ در سمت کدگذاری‌شده، آن را به‌طور خودکار دوباره به متن ساده رمزگشایی می‌کند.
  • برای کپی‌کردن مستقیم هر نسخه در کلیپ‌بورد، از دکمه‌های کپی استفاده کنید.

موارد استفاده در دنیای واقعی

در حال ساخت دستی پارامتر رشتهٔ پرس‌وجو هستید و می‌خواهید مطمئن شوید فاصله یا علامت & درون مقدار، URL را خراب نمی‌کند. می‌خواهید یک رشتهٔ طولانی و ناخوانا با رمزگذاری درصدی را از نوار نشانی مرورگر یا گزارش سرور به متن ساده برگردانید تا ببینید واقعاً چه می‌گوید. همچنین ممکن است بخواهید داده‌های رمزگذاری‌شده برای فرم را برای درخواست API آماده کنید؛ درصورتی‌که API قالب x-www-form-urlencoded را به‌جای رمزگذاری درصدی استاندارد انتظار دارد.

سؤالات متداول

تفاوت بین encodeURI و encodeURIComponent چیست؟

encodeURI (حالت «URL کامل» در اینجا) برای رمزگذاری یک URL کامل و ازپیش‌ساختاریافته طراحی شده است؛ بنابراین نویسه‌هایی مانند / ? & = # را بدون تغییر باقی می‌گذارد. encodeURIComponent (حالت «مؤلفه») برای یک بخش منفرد از داده طراحی شده است که قرار است بخشی از یک URL باشد؛ بنابراین همین نویسه‌ها را نیز رمزگذاری می‌کند، چون وجود یک & یا = خام درون یک مقدار، در غیر این صورت ممکن است به‌اشتباه بخشی از ساختار URL تفسیر شود.

چرا در برخی URLهای کدگذاری‌شده برای فاصله از + و در برخی دیگر از %20 استفاده می‌شود؟

هر دو معتبرند، اما در زمینه‌های متفاوت. %20 کدگذاری درصدی استاندارد برای فاصله است و همه‌جا کار می‌کند. + فقط در داده‌های application/x-www-form-urlencoded به‌معنای «فاصله» است (همان قالبی که مرورگرها برای ارسال فرم‌های HTML و رشته‌های پرس‌وجوی ساخته‌شده از فرم‌ها استفاده می‌کنند) — حالت فرم همین رفتار را شبیه‌سازی می‌کند.

آیا کدگذاری URL همان کدگذاری Base64 است؟

خیر. کدگذاری URL (کدگذاری درصدی) نویسه‌های ناامن را یکی‌یکی با یک % و کد هگزادسیمال آن‌ها جایگزین می‌کند و نتیجه همچنان تا حد زیادی خواناست. Base64 کل ورودی را با الفبایی متفاوت دوباره کدگذاری می‌کند و اصلاً خوانا نیست — این روش برای قراردادن داده‌های دودویی به‌صورت متن ساخته شده، نه ایمن‌سازی URL.

اگر بخواهم متنی را رمزگشایی کنم که در واقع کدگذاری نشده است، چه اتفاقی می‌افتد؟

اگر هیچ دنباله % نداشته باشد، رمزگشایی آن را بدون تغییر برمی‌گرداند. اگر یک دنباله % ناقص داشته باشد (مثلاً %ای که پس از آن دو رقم هگزادسیمال معتبر نیامده باشد)، ابزار به‌جای حدس‌زدن هشدار نمایش می‌دهد.