کدگذار و کدگشای URL
URL، رشته کوئری و پارامترها را بهصورت درصدی کدگذاری و کدگشایی کنید، در مرورگر شما.
کدگذاری و رمزگشایی URL — تبدیل متن و پارامترهای آدرس بهصورت آنلاین
یک آدرس اینترنتی فقط مجموعه محدودی از کاراکترها را میپذیرد. هر چیز دیگری — فاصله، حروف فارسی، علامت &، اسلش داخل یک مقدار، ایموجی یا متن ژاپنی — باید پیش از سفر در یک لینک، Query String یا ارسال فرم به شکل درصدی کد شود. این ابزار رایگان همین تبدیل را در هر دو جهت و در یک لحظه انجام میدهد، بدون آنکه چیزی به سرور فرستاده شود.
متن را بچسبانید و کدگذاری بزنید تا رشتهای آماده انتقال بگیرید، یا یک آدرس کدشده را بچسبانید و با رمزگشایی آن را خوانا کنید. انتخابگر حالت به شما امکان میدهد میان encodeURIComponent و encodeURI جابهجا شوید؛ همین انتخاب تعیین میکند لینک شما کار کند یا بیسروصدا خراب شود.
کدگذاری URL چیست
کدگذاری URL که به آن کدگذاری درصدی هم میگویند، هر کاراکتر ناامن را با علامت درصد و مقدار هگزادسیمال بایت آن جایگزین میکند. فاصله به %20، اسلش به %2F و علامت سؤال به %3F تبدیل میشود. کاراکترهای خارج از ASCII ابتدا به بایتهای UTF-8 تبدیل و سپس بایت به بایت کد میشوند؛ به همین دلیل هر حرف فارسی معمولاً به دو گروه درصدی و هر ایموجی تا چهار گروه تبدیل میشود.
encodeURIComponent یا encodeURI؟
| موقعیت | حالت | دلیل |
|---|---|---|
| کدگذاری مقدار یک پارامتر | encodeURIComponent | کاراکترهای &، =، ?، / و # را Escape میکند تا مقدار از فیلد خودش بیرون نزند |
| کدگذاری یک بخش از مسیر مثل Slug | encodeURIComponent | جلوی اسلش داخل مقدار را میگیرد تا سطح مسیر جدیدی ساخته نشود |
| مرتب کردن یک آدرس کامل که از قبل دارید | encodeURI | کاراکترهای ساختاری را دستنخورده میگذارد و آدرس همچنان معتبر میماند |
| فرستادن یک آدرس بازگشت داخل آدرس دیگر | encodeURIComponent | آدرس درونی یک مقدار است، نه ساختار |
روش کدگذاری و رمزگشایی آدرس
- متن، مقدار پارامتر یا آدرس کامل را در کادر ورودی بچسبانید.
- برای یک مقدار تکی
encodeURIComponentو برای یک آدرس کاملencodeURIرا انتخاب کنید. - برای کدگذاری روی کدگذاری و برای برگرداندن روی رمزگشایی بزنید.
- خروجی را مستقیم در کد، نوار آدرس مرورگر یا کلاینت API خود بچسبانید.
کاراکترهایی که بیشتر از همه میبینید
%20— فاصله. در ارسال فرمهای قدیمی همین نقش را+بازی میکند.%2F— اسلش، وقتی بخشی از مقدار است و نه بخشی از مسیر.%3Fو%26— علامت سؤال و &، دو جداکننده پارامترها.%3D— علامت مساوی که نام پارامتر را از مقدارش جدا میکند.%23— علامت #، که در غیر این صورت آغاز شناسه بخش صفحه خوانده میشود.%2B— علامت بهعلاوه، که اگر کد نشود ممکن است فاصله تفسیر شود.
چه زمانی به کدگذار URL نیاز دارید
- ساخت لینکهای جستجو، فیلتر یا صفحهبندی که ورودی کاربر در Query String آنها مینشیند.
- فرستادن آدرس بازگشت بهعنوان
redirect_uriبرای یک ارائهدهنده OAuth یا درگاه پرداخت. - افزودن پارامترهای کمپین UTM که شامل فاصله یا علائم نگارشی هستند.
- رمزگشایی یک لینک ردیابی طولانی در ایمیل تا ببینید واقعاً به کجا میرود.
- اشکالزدایی فراخوانی API که پارامتر آن حاوی JSON، مهر زمانی یا امضا است.
- کار با Slugهای غیرلاتین تا عنوان فارسی، ژاپنی یا سیریلیک از کپی و پیست جان سالم به در ببرد.
اشتباههایی که لینک را خراب میکنند
- کدگذاری دوباره. کد کردن رشتهای که قبلاً کد شده،
%20را به%2520تبدیل میکند. اول رمزگشایی کنید، بعد یک بار کدگذاری. - کد کردن کل آدرس با encodeURIComponent. در این حالت
://و اسلشها هم Escape میشوند و دیگر آدرس نیست. - اشتباه گرفتن + با %20. در Query String علامت بهعلاوه میتواند معنی فاصله بدهد، اما در مسیر یک علامت واقعی است.
- فراموش کردن UTF-8. صفحههای قدیمی با ISO-8859-1 گروههایی میسازند که رمزگشای امروزی نمیتواند برگرداند.
- اعتماد به مقدار رمزگشاییشده. رمزگشایی به معنی پاکسازی نیست؛ ورودی را پیش از استفاده در کوئری یا HTML اعتبارسنجی کنید.
همه چیز داخل مرورگر شما اجرا میشود
این ابزار از توابع JavaScript خود مرورگر استفاده میکند، بنابراین چیزی آپلود، ذخیره یا در لاگ ثبت نمیشود. به این ترتیب آدرسهای امضاشده، شناسههای نشست و پارامترهای حاوی اطلاعات مشتری همانجا میمانند که باید بمانند: روی دستگاه خودتان.
URL Encode در جاوااسکریپت، پایتون، PHP، جاوا و C#
| زبان | کدگذاری یک مقدار | نکته |
|---|---|---|
| JavaScript | encodeURIComponent(value) | encodeURI برای یک آدرس کامل |
| Python | urllib.parse.quote(value, safe='') | quote_plus فاصله را به + تبدیل میکند |
| PHP | rawurlencode($value) | urlencode برای فاصله از + استفاده میکند |
| Java | URLEncoder.encode(value, "UTF-8") | برای فاصله + تولید میکند؛ داخل مسیر آن را با %20 جایگزین کنید |
| C# / .NET | Uri.EscapeDataString(value) | HttpUtility.UrlEncode از + استفاده میکند |
| PowerShell | [uri]::EscapeDataString($value) | همان قواعد .NET |
ابزارهای مرتبط
آدرسها و دادهها معمولاً کنار هم میآیند. داده باینری جاسازیشده را با کدگذار Base64 باز کنید، توکن داخل آدرس بازگشتی را با رمزگشای JWT بخوانید، پاسخ API را با فرمتکننده JSON مرتب کنید و الگوها را با آزمایشگر Regex تست کنید.