کدگذاری URL چطور کار میکند
در نشانیهای وب فقط تعداد کمی نویسه مجاز است: حروف لاتین، رقمها و چند علامت نگارشی. بقیه کد میشوند. حرف س در UTF-8 از دو بایت D8 و B3 ساخته شده و به %D8%B3 تبدیل میشود. فاصله هم %20 میشود، یا در فرمها +.
کدشده
%D8%AA%D9%87%D8%B1%D8%A7%D9%86 %D9%88 %D8%B4%DB%8C%D8%B1%D8%A7%D8%B2
رمزگشاییشده
تهران و شیراز
رایجترین کدهای URL
%D8%A7= ا،%D8%B3= س،%D9%85= م،%D8%B1= ر%DB%8C= ی،%DA%A9= ک،%DA%AF= گ،%DA%86= چ،%D9%BE= پ،%DA%98= ژ%E2%82%AC= €،%E2%80%99= ’،%E2%80%93= –%20= فاصله،%2F= /،%3F= ?،%26= &،%25= %
حروف فارسی بیشتر با %D8 یا %D9 شروع میشوند و حروف ویژهای مثل ی، ک، گ و چ با %DB یا %DA. هر حرف دو کد (دو بایت) دارد. سیستمهای قدیمی گاهی هر حرف را با یک بایت از Windows-1256 کد میکنند: %DD%C7%D1%D3%ED به جای %D9%81%D8%A7%D8%B1%D8%B3%DB%8C. Mojibuster این را هم میشناسد و به فارسی تبدیل میکند.
متن کدشده از کجا میآید
- لینکهای کپیشده: مرورگر نشانی ویکیپدیا را خوانا نشان میدهد، ولی هنگام کپی اغلب
%D8%AA%D9%87%D8%B1%D8%A7%D9%86در کلیپبورد میماند. - فرمها و ردیابی: عبارتهای جستوجو و پارامترهای UTM در لاگ سرور و گزارشهای تحلیلی کدشده ذخیره میشوند، مثلاً
?q=%DA%86%D8%A7%DB%8C. - خروجیها و API: بعضی ابزارهای خبرنامه، وبهوکها و API ها مقدارها را کدشده نگه میدارند؛ آنوقت در فایل CSV به جای نامها کد میبینید.
- نام فایلها: وقتی سرور نام را رمزگشایی نکند، فایل با نام
%D9%81%D8%A7%DA%A9%D8%AA%D9%88%D8%B1.pdfدانلود میشود.
کد و نویسههای خراب با هم
گاهی متن دو بار خراب شده است: %D8%B7%C2%A7%D8%B8%E2%80%9E شکل کدشدهی ط§ظ„ است، یعنی همان ال که اول با Windows-1256 اشتباه خوانده و بعد کد شده. Mojibuster اول کدها را رمزگشایی میکند و بعد خرابی را درست میکند؛ در پایان ال دوباره دیده میشود. جزئیات در تبدیل Windows-1256 به UTF-8.
گزینهی تبدیل کدها هم در این صفحه از قبل فعال است. این گزینه کدهای HTML (س)، کدهای ایمیل (=D8=B3) و کدهای برنامهنویسی (\u0633) را هم تبدیل میکند. برای خطاهای دیگر: موجیباستر چیست.
رمزگشایی دستی در اکسل، جاوااسکریپت، پایتون و PHP
- اکسل: فقط تابع کدگذاری دارد (
ENCODEURLدر نسخهی انگلیسی) و تابعی برای رمزگشایی ندارد. سادهترین راه: ستون را کپی کنید، اینجا بچسبانید و نتیجه را برگردانید. مشکل حروف عجیب در اکسل را هم ببینید. - جاوااسکریپت:
decodeURIComponent("%D8%AA%D9%87%D8%B1%D8%A7%D9%86")نتیجهاشتهراناست. - پایتون:
urllib.parse.unquote("%D8%AA%D9%87%D8%B1%D8%A7%D9%86")، یاunquote_plusبرای دادهی فرم که+را فاصله میگیرد. - PHP: تابع
rawurldecode()، یاurldecode()برای دادهی فرم.
پرسشهای متداول
%D8%B3 یعنی چه؟
همان حرف س در کدگذاری URL است: دو بایت D8 و B3 در UTF-8 که جلوی هر کدام % آمده. به همین ترتیب %D8%A7 حرف ا و %D9%85 حرف م است.
%20 یعنی چه؟
یک فاصله. در دادهی فرم اغلب به جای آن + میآید. Mojibuster علامت + را دست نمیزند، چون در متن عادی ممکن است واقعاً علامت جمع باشد.
آیا لینکهای من آپلود میشوند؟
خیر. تبدیل کاملاً داخل مرورگر انجام میشود. لینکهای دارای توکن، نشانی ایمیل یا اطلاعات شخصی هرگز از دستگاه شما خارج نمیشوند.
چرا 100% تغییری نمیکند؟
Mojibuster فقط دنبالههایی را تبدیل میکند که یک نویسهی ویژهی واقعی بسازند. 100%، 50 % یا یک %20 تنها در متن عادی همانطور میمانند.