URL Encoding چیست؟ چرا بعضی کاراکترها در لینک به %20 و کدهای عجیب تبدیل میشوند؟
وقتی با لینکهای اینترنتی کار میکنیم، ممکن است با آدرسهایی مواجه شویم که بهجای بعضی کاراکترها، عبارتهایی مانند %20، %2F یا %26 در آنها دیده میشود. این کدها در نگاه اول ممکن است عجیب به نظر برسند، اما بخشی طبیعی از ساختار URL هستند. به این فرایند URL Encoding یا Percent-Encoding گفته میشود. در این مقاله با مفهوم URL Encoding، دلیل استفاده از آن، کدهای رایج و تأثیر آن بر لینکها آشنا میشویم.
URL Encoding چیست؟
URL Encoding روشی برای تبدیل بعضی کاراکترهای موجود در یک URL به یک قالب قابل استفاده در آدرس اینترنتی است. برخی کاراکترها در URL معنای خاصی دارند و برخی دیگر ممکن است در همه سیستمها یا مرورگرها بهصورت مستقیم قابل استفاده نباشند. در چنین شرایطی، کاراکتر موردنظر با علامت % و یک مقدار هگزادسیمال نمایش داده میشود.
برای مثال، فاصله معمولاً به شکل زیر نمایش داده میشود:
%20
بنابراین اگر عبارت زیر را داشته باشیم:
hello world
ممکن است در یک URL به شکل زیر دیده شود:
hello%20world
چرا URLها به Encoding نیاز دارند؟
URL فقط یک متن معمولی نیست. بخشهای مختلف یک URL وظایف مشخصی دارند و بعضی کاراکترها برای جدا کردن قسمتهای مختلف آدرس استفاده میشوند. برای مثال، در URL زیر علامت ? شروع Query String را مشخص میکند و علامت & برای جدا کردن پارامترهای مختلف استفاده میشود:
https://example.com/search?q=short+link&page=2
اگر یکی از این کاراکترها بخشی از مقدار یک پارامتر باشد، باید بهدرستی Encode شود تا با ساختار URL اشتباه گرفته نشود.
%20 چیست؟
یکی از رایجترین مواردی که هنگام کار با URL مشاهده میشود، %20 است. در Percent-Encoding، مقدار هگزادسیمال مربوط به فاصله به شکل 20 نمایش داده میشود و علامت درصد نیز نشان میدهد که با یک مقدار Encode شده روبهرو هستیم.
بنابراین:
hello world
میتواند به شکل زیر در URL قرار بگیرد:
hello%20world
چند کد رایج در URL Encoding
در جدول زیر چند نمونه از کاراکترهایی را میبینید که ممکن است در URL به شکل Percent-Encoding نمایش داده شوند:
| کاراکتر | Encoded | کاربرد یا توضیح |
|---|---|---|
| فاصله | %20 | نمایش فاصله در Percent-Encoding |
| / | %2F | Slash |
| ? | %3F | علامت سؤال |
| # | %23 | علامت Fragment |
| & | %26 | جداکننده پارامترها |
| = | %3D | علامت مساوی |
| + | %2B | علامت جمع |
| % | %25 | علامت درصد |
تفاوت %20 و + چیست؟
یکی از نکات مهم در کار با URL این است که ممکن است فاصله را هم به صورت %20 و هم در برخی ساختارها به صورت + ببینید. درصدگذاری یا Percent-Encoding برای فاصله از %20 استفاده میکند. در مقابل، علامت + در قالبهایی مانند application/x-www-form-urlencoded میتواند بهعنوان نمایش فاصله استفاده شود. بنابراین نباید همیشه + و %20 را کاملاً معادل یکدیگر در تمام بخشهای URL در نظر گرفت.
مثال ساده از URL Encoding
فرض کنید یک سایت جستوجویی دارد و کاربر عبارت زیر را جستوجو میکند:
لینک کوتاه
در صورتی که این عبارت در Query String قرار بگیرد، مرورگر یا نرمافزار میتواند آن را به شکل Encode شده ارسال کند. برای نمونه، یک URL میتواند ساختاری مشابه این داشته باشد:
https://example.com/search?q=%D9%84%DB%8C%D9%86%DA%A9%20%DA%A9%D9%88%D8%AA%D8%A7%D9%87
در اینجا حروف فارسی نیز به صورت مقادیر Encode شده نمایش داده شدهاند.
URL Encoding برای زبان فارسی
URLها ممکن است شامل کاراکترهایی خارج از مجموعه ساده ASCII باشند. حروف فارسی، عربی و بسیاری از کاراکترهای Unicode در URL میتوانند به شکل Percent-Encoding نمایش داده شوند. به همین دلیل ممکن است یک URL فارسی در ظاهر بسیار طولانیتر از متن اصلی آن باشد.
برای مثال:
https://example.com/%D8%AE%D8%A8%D8%B1
این موضوع به معنی خراب بودن لینک نیست. این فقط شکل Encode شده کاراکترهای موجود در URL است.
URL Encoding و لینکهای کوتاه
URL Encoding هنگام کار با سرویسهای کوتاهکننده لینک نیز اهمیت دارد. مقصد یک لینک کوتاه ممکن است شامل Query String، پارامترهای UTM، حروف فارسی یا کاراکترهای خاص باشد. برای مثال، یک URL مقصد ممکن است دارای پارامترهایی مانند موارد زیر باشد:
https://example.com/page?utm_source=telegram&utm_campaign=spring_sale
اگر پارامترهای URL بهدرستی Encode یا Decode نشوند، ممکن است مقدار پارامترها بهدرستی منتقل نشود یا ساختار URL تغییر کند.
به همین دلیل، هنگام ایجاد لینک کوتاه بهتر است URL مقصد قبل از ذخیره و استفاده، بهدرستی پردازش شود.
تفاوت Encode و Decode چیست؟
Encode یعنی تبدیل داده به قالب مناسب برای قرار گرفتن در URL.
Decode یعنی برگرداندن مقدار Encode شده به شکل قابل خواندن یا مقدار اصلی.
برای مثال:
hello world ↓ hello%20world
در فرایند Decode، مقدار Encode شده دوباره به مقدار اصلی تبدیل میشود.
آیا URL Encoding باعث امنیت بیشتر میشود؟
خیر. URL Encoding یک روش امنیتی یا رمزنگاری نیست. این فرایند فقط نحوه نمایش و انتقال بعضی کاراکترها را تغییر میدهد. بنابراین نباید اطلاعات محرمانه را صرفاً به دلیل Encode شدن، امن یا مخفی تصور کرد. اگر اطلاعات حساس در URL قرار بگیرد، همچنان ممکن است در تاریخچه مرورگر، لاگهای سرور، ابزارهای تحلیل یا سایر بخشهای زیرساخت ثبت شود.
اشتباهات رایج در URL Encoding
- Encode کردن چندباره یک URL بدون نیاز.
- Decode کردن بخشی از URL در حالی که باید مقدار اصلی حفظ شود.
- استفاده نادرست از + و %20.
- قرار دادن کاراکترهای خاص در Query String بدون پردازش مناسب.
- فرض کردن اینکه URL Encoding همان رمزنگاری است.
- پردازش نکردن صحیح URLهای دارای حروف فارسی یا Unicode.
Encode کردن URL در برنامهنویسی
در زبانهای برنامهنویسی مختلف ابزارها و توابع استانداردی برای URL Encoding وجود دارد. استفاده از این ابزارها معمولاً بهتر از جایگزین کردن دستی کاراکترهاست. برای مثال، در JavaScript میتوان از encodeURIComponent() برای Encode کردن یک بخش از URL استفاده کرد:
const value = "hello world"; const encoded = encodeURIComponent(value); console.log(encoded);
نتیجه برای این مثال خواهد بود:
hello%20world
URL Encoding چه زمانی مهمتر میشود؟
اگر با لینکهای ساده و بدون پارامتر کار میکنید، ممکن است کمتر متوجه URL Encoding شوید. اما هنگام ساخت لینکهای دارای پارامتر، جستوجو، UTM، اطلاعات فارسی یا دادههای پویا، اهمیت آن بیشتر میشود. برای سرویسهایی مانند zqz.ir که با ایجاد، مدیریت و تغییرمسیر لینکها سروکار دارند، پردازش صحیح URL مقصد اهمیت زیادی دارد؛ زیرا یک اشتباه کوچک در Encoding میتواند باعث تغییر مقدار پارامتر یا ایجاد لینک نامعتبر شود.
چطور یک URL Encode شده را تشخیص دهیم؟
اگر در یک URL عبارتهایی مانند %20، %2F، %3F یا رشتههایی از چند کد درصدی پشت سر هم مشاهده کردید، احتمالاً بخشی از URL به صورت Percent-Encoding نمایش داده شده است. این موضوع بهتنهایی نشانه مشکل یا خراب بودن لینک نیست. مرورگر معمولاً میتواند چنین URLهایی را بهدرستی پردازش کند.
جمعبندی
URL Encoding یکی از بخشهای مهم ساختار URL است که امکان استفاده صحیح از کاراکترهای خاص، فاصلهها و دادههای Unicode را فراهم میکند. عبارتهایی مانند %20، %2F و %26 کدهای رمزنگاریشده برای مخفی کردن اطلاعات نیستند؛ بلکه نمایش استانداردی برای بعضی کاراکترها در URL هستند.
شناخت URL Encoding برای توسعهدهندگان، مدیران سایت، متخصصان سئو و افرادی که با لینکهای کوتاه و پارامترهای URL کار میکنند، مفید است. بهخصوص زمانی که لینک دارای پارامترهای متعدد، UTM یا محتوای فارسی باشد، پردازش صحیح URL میتواند از بسیاری از خطاهای مربوط به لینک جلوگیری کند.
اگر از لینکهای کوتاه برای کمپینها، تبلیغات یا اشتراکگذاری محتوا استفاده میکنید، بهتر است قبل از انتشار نهایی، URL مقصد و پارامترهای آن را بررسی کنید تا Encoding و ساختار لینک به شکل صحیح حفظ شده باشد.