رمزگذاری درصدی چیست؟+−
رمزگذاری درصدی (که رمزگذاری URL نیز نامیده میشود) یک نویسه را با % بههمراه مقدار هگزادسیمال دو رقمی آن جایگزین میکند، که برای هر بایت از نمایش UTF-8 آن نویسه تکرار میشود. به همین ترتیب یک URL میتواند فاصله (%20)، علامت & (%26) یا یک شکلک را بدون اشتباهگرفتن این نویسهها با نحو خود URL، حمل کند.
تفاوت encodeURIComponent و encodeURI چیست؟+−
encodeURIComponent همه چیز بهجز مجموعه کوچکی از نویسههای غیررزروشده را میگریزاند، که آن را برای یک مقدار تکی - یک پارامتر کوئری یا بخشی از مسیر - انتخاب درستی میکند، زیرا نویسههایی مانند & و = را نیز که در غیر این صورت بهعنوان ساختار URL خوانده میشوند، میگریزاند. encodeURI برای کل یک URL در نظر گرفته شده است: نویسههای ساختاری مانند :، /، ?، & و # را دستنخورده باقی میگذارد تا URL همچنان کار کند، و فقط نویسههایی را میگریزاند که یک URL واقعاً نمیتواند در خود جای دهد، مانند فاصله. عبور دادن کل یک URL از encodeURIComponent آن را خراب میکند، زیرا خطهای مورب و دونقطهها نیز گریزانده میشوند.
آیا هنوز باید از escape() و unescape() استفاده کنم؟+−
خیر. هر دو در همان اولین نسخه از استاندارد جاوااسکریپت که encodeURIComponent را نیز معرفی کرد، منسوخ اعلام شدند، زیرا escape() متن غیر ASCII را به شکلی که HTTP و URLهای مدرن انتظار دارند رمزگذاری نمیکند - برای هر چیزی خارج از Latin-1 از قالب غیراستاندارد %uXXXX استفاده میکند که decodeURIComponent نمیتواند آن را بازخوانی کند. این ابزار این گزینه را فقط برای این نگه میدارد که بتوانید خروجی یک سیستم قدیمی را بررسی کنید.
چرا علامت + در رشته کوئری به فاصله تبدیل میشود؟+−
رشتههای کوئری از نظر تاریخی از ارسال فرمهای HTML میآیند که از قالب application/x-www-form-urlencoded استفاده میکنند: این قالب یک فاصله واقعی را بهجای %20 بهصورت + رمزگذاری میکند، و تجزیهگر این ابزار (و همچنین URLSearchParams در جاوااسکریپت) هنگام رمزگشایی هر دو را بهعنوان فاصله در نظر میگیرند. اگر مقداری واقعاً به یک علامت جمع لفظی نیاز داشته باشد، خود آن باید بهصورت %2B رمزگذاری درصدی شود.
با یک پارامتر تکراری مانند ?tag=a&tag=b چه اتفاقی میافتد؟+−
چیزی از دست نمیرود - این ابزار هر رخداد را بهترتیب، بهصورت یک ردیف مجزا در جدول پارامترهای کوئری حفظ میکند، دقیقاً همانطور که بیشتر فریمورکهای سمت سرور یک کلید تکراری را در یک فهرست جمعآوری میکنند. ویرایش یا حذف یک ردیف روی بقیه تأثیری ندارد.
چرا تجزیهگر برای URL من https:// را فرض کرد؟+−
رشتهای مانند example.com/path پروتکلی ندارد، بنابراین نه مرورگر و نه این ابزار نمیتوانند بدانند که آیا این یک آدرس وب است، برای پروتکلی دیگر در نظر گرفته شده، یا صرفاً متنی ساده است. تجزیهگر بهجای رد کردن آن، https:// را فرض میکند تا همچنان بتوانید آن را بررسی و ویرایش کنید - هر بار که این اتفاق میافتد راهنمایی نمایش داده میشود، و اگر طرح دیگری مورد نظر بوده، میتوانید فیلد پروتکل را اصلاح کنید.