ترميز عبارة بحث
hello world & more
hello%20world%20%26%20more
الفراغات تتحوّل إلى %20، ورمز & يصبح %26 حتى لا يُفسَّر على أنه فاصل بين معاملات الـ query.
رمّز وفك ترميز مكونات URL بأمان.
Last updated
أداة ترميز URL (تُعرف أيضًا بـ percent-encoder أو URI encoder) تستبدل الرموز المحجوزة أو غير الآمنة داخل الروابط بعلامة % متبوعة برقمين بالنظام السادس عشر. يلجأ إليها المطورون عند بناء الـ query strings، أو تهريب أجزاء المسار، أو مشاركة روابط تحتوي على فراغات أو رموز خارج نطاق ASCII، أو تتبّع مشاكل إعادة التوجيه.
الروابط محصورة في مجموعة صغيرة من رموز ASCII. أي شيء خارج هذه المجموعة — كالفراغات، والحروف ذات الحركات، والإيموجي، أو الرموز المحجوزة مثل ? و # و & و = حين تُستعمل كبيانات — لا بد أن يُرمَّز بصيغة percent-encoding ليصل سليمًا من المتصفح إلى الخادم.
توفّر JavaScript دالتين للترميز: encodeURI (تحافظ على بنية الرابط: / و ? و # و &) و encodeURIComponent (تُرمّز كل رمز محجوز). استخدم encodeURIComponent مع *قيم* تضعها داخل query string، و encodeURI مع *الروابط الكاملة* التي تريد أن تظل قابلة للعمل.
% متبوعة برقمين بالنظام السادس عشر — مثلًا، الفراغ يصبح %20.: / ? # & = +) لها معنى خاص في بنية الرابط، لذا يجب ترميزها حين تُستعمل كبيانات لا كفواصل.اختر «ترميز» إذا كان لديك نص خام وتريد جعله آمنًا داخل الرابط. واختر «فك الترميز» إذا كان لديك نص مرمَّز بصيغة % وتريد استعادة النص الأصلي.
اختر encodeURIComponent (يرمّز كل رمز محجوز) لقيم الـ query string، واختر encodeURI (يحافظ على البنية) للروابط الكاملة.
الصق النص الخام أو الرابط المرمَّز. يدعم الإدخال متعدد الأسطر لفك ترميز عدة قيم دفعةً واحدة.
انسخ القيمة المرمَّزة أو المفكوكة. تتم العملية محليًا داخل متصفحك، فأي بيانات حساسة في الروابط تبقى على جهازك.
أكثر الرموز التي ستراها مرمَّزة، مع شكلها بصيغة percent-encoding. دلالات الرموز المحجوزة مأخوذة من RFC 3986.
| الرمز | الترميز | السبب |
|---|---|---|
| فراغ | %20 | الفراغات غير مسموح بها داخل الروابط |
! | %21 | محجوز عند بعض الخوادم |
# | %23 | يدلّ على بداية الـ fragment |
$ | %24 | رمز محجوز |
& | %26 | يفصل بين معاملات الـ query |
+ | %2B | يعني فراغًا داخل أجسام النماذج المرمَّزة form-encoded |
/ | %2F | فاصل بين أجزاء المسار |
: | %3A | يفصل بين الـ scheme والمضيف |
= | %3D | يفصل بين المفتاح والقيمة في الـ query string |
? | %3F | يدلّ على بداية الـ query string |
@ | %40 | يفصل بين معلومات المستخدم والمضيف |
| بايت UTF-8 | %C3%A9 | كل بايت خارج نطاق ASCII يُرمَّز على حدة |
hello world & more
hello%20world%20%26%20more
الفراغات تتحوّل إلى %20، ورمز & يصبح %26 حتى لا يُفسَّر على أنه فاصل بين معاملات الـ query.
café
caf%C3%A9
حرف é يُمثَّل في UTF-8 بسلسلة البايتين 0xC3 0xA9، لذا تظهر *مجموعتان* من %XX لتمثيل حرف واحد.
https://example.com/path?q=hello world
https://example.com/path?q=hello%20world
https%3A%2F%2Fexample.com%2Fpath%3Fq%3Dhello%20world
encodeURI تحافظ على بنية الرابط (الشرطات المائلة و ? و =)، بينما encodeURIComponent ترمّز كل الرموز المحجوزة — استخدمها على القيم التي تضعها داخل query string، ولا تستعملها أبدًا على رابط كامل.
encodeURI لقيم الـ query string — رمزا & و = يبقيان كما هما، فينكسر تحليل المعاملات.%2520 بدلًا من %20 هو العلامة الكلاسيكية على مشكلة الترميز المزدوج.+ يعني فراغًا داخل أجسام application/x-www-form-urlencoded، لكنه يبقى علامة + حرفية داخل مسار الرابط أو الـ query.% متبوعة برقمين بالنظام السادس عشر.encodeURI تحافظ على رموز بنية الرابط (/ و ? و # و & و = و +)، أما encodeURIComponent فترمّزها جميعًا، وهذا ما تحتاجه عند وضع *قيم* مفردة داخل رابط — كقيم معاملات الـ query، وأجزاء المسار، والـ fragments. راجع توثيق MDN لكل من encodeURI و encodeURIComponent.%20؟%20، وهي صيغة percent-encoding لرمز الفراغ في ASCII (0x20 بالنظام السادس عشر).decodeURI أو decodeURIComponent أو أي أداة لفك الترميز بإرجاع percent-encoding إلى الرموز الأصلية.