کدگذار و رمزگشای URL
متن را برای URLها و رشتههای کوئری percent-encode کنید، URLهای کدگذاریشده را رمزگشایی کنید و هر URL را همراه با پارامترهای کوئری رمزگشاییشده به اجزایش تقسیم کنید.
اجرا در مرورگر شمابدون ثبتنامبدون آپلود
اجزا
پارامترهای کوئری
نحوهٔ استفاده از کدگذاری / رمزگشایی URL
- کدگذاری یا رمزگشایی را انتخاب کنید.
- هنگام کدگذاری، برای یک مقدار کوئری یا بخش مسیر مؤلفه، برای حفظ ساختار URL گزینهٔ URL کامل، یا گزینهٔ دادهٔ فرم را برای
application/x-www-form-urlencodedانتخاب کنید. - متن خود را جایگذاری کنید. نتیجه فوراً ظاهر میشود؛ escapeهای نادرست با موقعیتشان گزارش میشوند.
- یک URL کامل را در تجزیهگر URL جایگذاری کنید تا میزبان، مسیر، فرگمنت و همهٔ پارامترهای کوئری رمزگشاییشده را ببینید.
URL encoding چیست؟
URLها فقط میتوانند مجموعهٔ محدودی از کاراکترهای ASCII را داشته باشند (RFC 3986). هر چیز دیگر، از جمله فاصلهها، حروف غیرانگلیسی و کاراکترهایی که معنای خاص دارند مانند &، ? و #، بهصورت یک علامت درصد و دو رقم هگز برای هر بایت UTF-8 نوشته میشود. فاصله به %20 و é به %C3%A9 تبدیل میشود.
encodeURIComponent در برابر encodeURI
| تابع | دستنخورده میگذارد | کاربرد |
|---|---|---|
encodeURIComponent | A-Z a-z 0-9 - _ . ~ | یک مقدار کوئری، بخش مسیر یا نام پارامتر |
encodeURI | بهعلاوهٔ : / ? # [ ] @ ! $ & ' ( ) * + , ; = | یک URL کامل که ساختارش باید حفظ شود |
استفاده از encodeURI برای یک مقدار کوئری یک باگ کلاسیک است: & داخل مقدار escape نمیشود و پارامتر را به دو بخش تقسیم میکند. حالت مؤلفه در این ابزار برای سازگاری کامل با RFC 3986، ! ' ( ) * را هم escape میکند.
%20 یا + برای فاصله؟
در مسیرها فاصله باید %20 باشد. در ارسال فرمهای HTML (application/x-www-form-urlencoded) و بسیاری از رشتههای کوئری، فاصله بهصورت + نوشته میشود. هنگام رمزگشایی، برای دادهٔ فرم + را فاصله در نظر بگیر را فعال کنید و وقتی علامت جمع واقعی اهمیت دارد، مانند jane+test@example.com، آن را غیرفعال کنید.
پرسشهای متداول
چرا هنگام رمزگشایی خطای «Malformed escape» میگیرم؟
% باید دقیقاً دو رقم هگز بیاید. یک علامت درصد واقعی، مانند «50% تخفیف»، باید بهصورت %25 کدگذاری میشد. خطا موقعیت دنبالهٔ نادرست را نشان میدهد.«توالی بایت UTF-8 نامعتبر» یعنی چه؟
%E9 برای é بهجای %C3%A9)، یا رشته وسط یک کاراکتر بریده شده است.کل URL را کدگذاری کنم یا فقط پارامترها را؟
= و & به هم وصل کنید. کدگذاری یک URL کامل در حالت مؤلفه، :// را هم escape میکند و URL را خراب میکند.آیا کدگذاری دوباره مشکلساز است؟
%20 را به %2520 تبدیل میکند. اگر %25 و پس از آن ارقام هگز میبینید، احتمالاً مقدار دو بار کدگذاری شده است. برای بازیابی اصل آن، دو بار رمزگشایی کنید.