URL Encoder

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

هر متنی را به یک رشته‌ی percent-encoding شده و امن برای URL تبدیل کنید، یا یک URL کدشده را به متن ساده برگردانید. پیش‌نمایش زنده، سازگار با UTF-8 و کاملاً درون مرورگر شما.

Component (encodeURIComponent) هر چیزی را که کاراکتر unreserved نباشد escape می‌کند — امن‌ترین گزینه برای مقادیر کوئری‌استرینگ، بخش‌های مسیر یا هر فیلد منفرد. URI (encodeURI) کاراکترهای ساختاری URL را حفظ می‌کند (:/?#=&) — برای یک URL کامل از آن استفاده کنید. Form (application/x-www-form-urlencoded) همان Component است با این تفاوت که فاصله‌ها به '+' تبدیل می‌شوند — همان چیزی که فرم‌های HTML استفاده می‌کنند.

RFC 3986 مجموعه‌ای از کاراکترهای «unreserved» را تعریف می‌کند که نیازی به رمزگذاری ندارند: A-Z a-z 0-9 - _. ~. هر چیز دیگری percent-encoding می‌شود. encodeURIComponent علاوه بر این، :/?#&= را نیز رمزگذاری می‌کند، در حالی که encodeURI آن‌ها را دست‌نخورده می‌گذارد. این تفاوت زمانی مهم است که در حال رمزگذاری یک مقدار کوئری در برابر یک URL کامل هستید.

متن ساده

0 کاراکتر

خروجی رمزگذاری‌شده

0 کاراکتر

چرا رمزگذار URL از iKit

سریع، دقیق و فقط در مرورگر — برای توسعه‌دهندگان، نویسندگان محتوا و هر کسی که در حال اشکال‌زدایی URL است.

سه حالت رمزگذاری

بسته به آنچه رمزگذاری می‌کنید — مقدار کوئری‌استرینگ، یک URL کامل، یا داده‌ی فرم HTML — حالت Component، URI کامل یا Form را انتخاب کنید.

حریم خصوصی از پایه

هر رمزگذاری و رمزگشایی با JavaScript بومی در مرورگر شما انجام می‌شود. متن و URLهای شما هرگز از دستگاه شما خارج نمی‌شوند.

پیش‌نمایش زنده

خروجی با هر فشردن کلید به‌روزرسانی می‌شود — نه دکمه‌ی «Encode»ی برای زدن، نه رفت‌وبرگشتی به سرور.

سازگار با UTF-8

ایموجی، کاراکترهای CJK، لاتین با علامت و سیریلیک به‌درستی از طریق encodeURIComponent رفت‌وبرگشت می‌کنند.

مدیریت + به سبک فرم

هنگام رمزگشایی، می‌توانید '+' را به‌عنوان فاصله در نظر بگیرید — قراردادی که فرم‌های HTML تحت application/x-www-form-urlencoded استفاده می‌کنند.

پردازش گروهی فایل

یک فایل.txt،.csv یا.json را رها کنید تا در یک مرحله رمزگذاری یا رمزگشایی شود. خروجی به‌صورت یک فایل.txt تمیز دانلود می‌شود.

رمزگذاری URL در عمل چگونه کار می‌کند

سه API بومی مرورگر، سه حالت، همگی در همان صفحه‌ای که می‌خوانید اجرا می‌شوند.

  1. 1

    شما در ویرایشگر تایپ می‌کنید

    با هر فشردن کلید، رشته‌ی ورودی به یک تابع کوچک JavaScript ارسال می‌شود. هیچ debounce، هیچ فراخوانی API و هیچ fetchی در کار نیست — این تابع به‌صورت همگام در تب مرورگر شما اجرا می‌شود.

  2. 2

    حالت را انتخاب کنید

    Component تابع encodeURIComponent را فراخوانی می‌کند — هر چیزی که A-Z a-z 0-9 - _. ~ نباشد را escape می‌کند. URI تابع encodeURI را فراخوانی می‌کند — :/?#=& را حفظ می‌کند تا یک URL کامل معتبر بماند. Form از encodeURIComponent استفاده می‌کند و فاصله را با + جایگزین می‌کند طبق application/x-www-form-urlencoded.

  3. 3

    UTF-8 به‌اتفاق می‌افتد

    هر دو تابع encodeURIComponent و encodeURI به‌صورت داخلی رشته را پیش از percent-encoding هر بایت غیرامن، به بایت‌های UTF-8 تبدیل می‌کنند. این یعنی %E4%B8%AD برای حرف چینی 中 — دقیقاً همان چیزی که RFC 3986 می‌خواهد.

  4. 4

    خروجی به‌صورت زنده ظاهر می‌شود

    نتیجه به‌عنوان مقدار خروجی فقط‌خواندنی تنظیم می‌شود. روی Copy کلیک کنید تا با navigator.clipboard.writeText در کلیپ‌بورد قرار گیرد، یا Download را بزنید تا از طریق یک Blob URL به‌صورت .txt ذخیره شود — هر دو در مرورگر شما باقی می‌مانند.

کاربردهای رایج

موقعیت‌های واقعی که در آن انتخاب حالت رمزگذاری درست از باگ جلوگیری می‌کند.

ساخت مقادیر کوئری‌استرینگ

هر ورودی کاربر که در ?q=... قرار می‌دهید باید با حالت Component رمزگذاری شود. حالت URI کاراکترهای = و & را خام رها می‌کند و در صورتی که مقدار شامل آن‌ها باشد، URL شما را خراب می‌کند.

اشتراک‌گذاری یک URL طولانی در چت

برخی برنامه‌های چت و فایل‌های PDF در صورت وجود فاصله‌های خام یا کاراکترهای غیر ASCII، لینک‌ها را خراب می‌کنند. URL را با حالت URI پردازش کنید تا در همه‌جا برای کپی-پیست امن باشد.

اشکال‌زدایی بک‌اندی که خطای 400 می‌دهد

وقتی API شما یک درخواست را رد می‌کند، URL را در حالت Decode بچسبانید تا ببینید سرور واقعاً چه چیزی دیده است. مقادیر دو بار کدشده (که خود % به‌صورت %25 رمزگذاری شده) فوراً نمایان می‌شوند.

رفت‌وبرگشت داده‌ی فرم

هنگام اشکال‌زدایی بدنه‌های POST در application/x-www-form-urlencoded، با گزینه‌ی «+ به‌عنوان فاصله» فعال رمزگشایی کنید. این قراردادی است که مرورگرها استفاده می‌کنند، و فراموش کردن آن دلیل شماره یک باگ «چرا نام کاربری من با علامت + نمایش داده می‌شود» است.

چرا رمزگذاری محلی اهمیت دارد

URLهایی که رمزگذاری می‌کنید اغلب شامل ایمیل واقعی مشتریان، شناسه‌ها یا توکن‌های نشست هستند — دقیقاً همان نوع داده‌هایی که نمی‌خواهید در ابزار سرور یک غریبه بچسبانید. iKit URL Encoder به‌صورت JavaScript که از قبل در مرورگر شما بارگذاری شده اجرا می‌شود، بنابراین ورودی هرگز از تب شما خارج نمی‌شود.

  • بدون fetch، XHR یا beacon در حین رمزگذاری یا رمزگشایی.
  • پس از بارگذاری صفحه، آفلاین کار می‌کند.
  • بدون لاگ، بدون محدودیت نرخ، بدون ثبت‌نام، بدون سهمیه‌ی روزانه.

راهنماهای مرتبط

آموزش‌های تخصصی و مقایسه ابزارها از وبلاگ iKit.

پرسش‌های پرتکرار

تفاوت حالت‌های Component، URI و Form چیست؟

Component (encodeURIComponent) هر چیزی را که کاراکتر unreserved نباشد escape می‌کند — امن‌ترین گزینه برای مقادیر کوئری‌استرینگ، بخش‌های مسیر یا هر فیلد منفرد. URI (encodeURI) کاراکترهای ساختاری URL را حفظ می‌کند (:/?#=&) — برای یک URL کامل از آن استفاده کنید. Form (application/x-www-form-urlencoded) همان Component است با این تفاوت که فاصله‌ها به '+' تبدیل می‌شوند — همان چیزی که فرم‌های HTML استفاده می‌کنند.

چرا برخی کاراکترها رمزگذاری نمی‌شوند؟

RFC 3986 مجموعه‌ای از کاراکترهای «unreserved» را تعریف می‌کند که نیازی به رمزگذاری ندارند: A-Z a-z 0-9 - _. ~. هر چیز دیگری percent-encoding می‌شود. encodeURIComponent علاوه بر این، :/?#&= را نیز رمزگذاری می‌کند، در حالی که encodeURI آن‌ها را دست‌نخورده می‌گذارد. این تفاوت زمانی مهم است که در حال رمزگذاری یک مقدار کوئری در برابر یک URL کامل هستید.

چرا متن رمزگشایی‌شده‌ی من اشتباه به نظر می‌رسد؟

سه دلیل رایج: (۱) ورودی اصلی به‌صورت Form کدشده بوده و باید '+' به‌عنوان فاصله در نظر گرفته شود — این گزینه را فعال کنید. (۲) دو بار کدشده — ورودی دو بار رمزگذاری شده؛ یک بار دیگر رمزگشایی کنید. (۳) دنباله‌ی percent-encoding نامعتبر — یک % بدون دو رقم هگز در پی آن. برای موقعیت دقیق بایت، پیام خطا را ببینید.

آیا URL رمزگذاری‌شده دقیقاً مشابه encodeURIComponent در JavaScript است؟

بله برای حالت Component — ما مستقیماً encodeURIComponent را فراخوانی می‌کنیم. حالت Form تنظیمات استاندارد form-encoding را اضافه می‌کند (! ' * به %21 %27 %28 %29 %2A تبدیل می‌شوند) طبق RFC 3986 و WHATWG. حالت URI، encodeURI را فراخوانی می‌کند، که همان چیزی است که اکثر زبان‌ها از «percent-encode یک URL» منظورشان است.

آیا URLهای من جایی آپلود می‌شوند؟

خیر. کل ابزار JavaScript درون همین صفحه است — رمزگذاری و رمزگشایی در مرورگر شما رخ می‌دهد. می‌توانید با باز کردن DevTools → Network آن را تأیید کنید: در حین عملیات رمزگذاری یا رمزگشایی هیچ درخواستی ارسال نمی‌شود.