مشفّر URL أونلاين

ترميز الأحرف الخاصة في عناوين URL

جرب مثالاً

نص عادي / URL

مشفر

يعمل محليًا · آمن للصق الأسرار
المخرجات المشفرة...
الوضع:

ما هو ترميز URL؟

ترميز URL (المعروف أيضاً بالترميز المئوي) هو آلية لترميز المعلومات في معرّف الموارد الموحد (URI) بحيث تظهر في السلسلة النهائية فقط الأحرف المسموح بها وفق RFC 3986. يُستبدل أي حرف ليس من الأحرف غير المحجوزة (A–Z, a–z, 0–9, -, _, ., ~) بعلامة النسبة المئوية متبوعةً برقمين ست عشريين يمثلان قيمة البايت UTF-8 للحرف — فمثلاً تصبح المسافة %20 وتصبح & هي %26.

يُعدّ الترميز المئوي ضرورياً لأن عناوين URL لا تقبل سوى مجموعة محدودة من أحرف ASCII. حين تتضمن عنوان URL أحرفاً خارج هذه المجموعة — مسافات أو أحرف Unicode أو رموز كـ & و = و / مستخدمة كقيم حرفية لا كمحددات بنيوية — يجب ترميز هذه الأحرف لمنع محلل URL من تفسيرها بشكل خاطئ. وهذا بالغ الأهمية بصفة خاصة في قيم سلسلة الاستعلام، إذ إن & أو = غير المرمّزين سيكسران بنية المعاملات.

لماذا تستخدم هذه الأداة؟

تتيح لك رؤية كيفية ترميز نصك في كلا الوضعين فورياً مع مقارنة جنبية حية، دون الحاجة إلى كتابة شيفرة للتحقق من الحالات الحدية.

معاينة فورية
يتحدث الناتج أثناء الكتابة. جرّب مدخلات مختلفة وشاهد فورياً أي الأحرف تُرمَّز وأيها يُحفظ.
🔀
وضعان
بدّل بين encodeURIComponent (للقيم) وencodeURI (لعناوين URL الكاملة) دون مغادرة الصفحة.
🔒
من جانب العميل فقط
يعمل كل الترميز محلياً في متصفحك. معاملات الاستعلام الحساسة والرموز المميزة لا تصل أبداً إلى أي خادم.
📋
نسخ بنقرة واحدة
انسخ الناتج المرمَّز إلى الحافظة بزر واحد. جاهز للصق مباشرةً في شيفرتك أو طرفيتك أو شريط عنوان المتصفح.

كيفية استخدام هذا المشفِّر للروابط أونلاين

بدون حساب، بدون تثبيت. الصق نصك أو اكتبه في حقل الإدخال وستظهر النتيجة المُرمَّزة بالنسبة المئوية فورًا. كل شيء يعمل في متصفحك — لا تغادر بياناتك جهازك أبدًا.

  1. 1
    الصق نصك أو رابطك
    أدخل أي نص — قيمة معامل استعلام، أو رابط URL كامل، أو مقطع مسار، أو بيانات JSON. يعالج المُشفِّر النص حرفًا بحرف وفقًا لـ RFC 3986.
  2. 2
    اختر وضع الترميز
    اختر encodeURIComponent لترميز قيم المعاملات الفردية (يُرمِّز كل شيء باستثناء الأحرف غير المحجوزة). اختر encodeURI لترميز رابط URL كامل مع الحفاظ على أحرفه البنيوية مثل ://?#&=.
  3. 3
    انسخ المخرجات المُرمَّزة
    تظهر السلسلة المُرمَّزة بالنسبة المئوية فورًا. انقر على نسخ للحصول على النتيجة والصقها مباشرةً في استدعاء API أو إجراء النموذج أو ملف الإعداد.
  4. 4
    فك الترميز عند الحاجة
    ارتكبت خطأ أو تريد التحقق من النتيجة؟ انتقل إلى أداة فك ترميز URL بنقرة واحدة لعكس الترميز.

ما الأحرف التي تُرمَّز؟

يقسّم RFC 3986 أحرف URL إلى فئتين: الأحرف غير المحجوزة (لا تُرمَّز أبداً) والأحرف المحجوزة (ذات معنى خاص — تُرمَّز أو تُحفظ حسب السياق). يوضح الجدول أدناه كيفية تعامل دالتَي JavaScript مع الأحرف الرئيسية:

الحرفالمعنى في URLencodeURIComponentencodeURI
Spaceword separator%20%20
+plus sign%2B%2B
/path separator%2F/ (kept)
?query start%3F? (kept)
#fragment%23# (kept)
&param separator%26& (kept)
=param value%3D= (kept)
@auth separator%40@ (kept)
:scheme / port%3A: (kept)
%percent literal%25%25
~unreserved~ (kept)~ (kept)
-_.~unreserved setkept as-iskept as-is

encodeURIComponent مقابل encodeURI

تتيح JavaScript دالتَي ترميز ذواتَي سلوك مختلف جداً. اختيار الدالة الخاطئة هو أحد أكثر أخطاء التعامل مع URL شيوعاً:

encodeURIComponent()
تُرمِّز كل شيء باستثناء مجموعة الأحرف غير المحجوزة (A–Z a–z 0–9 - _ . ~). هذا هو الاختيار الصحيح لترميز قيم معاملات الاستعلام المفردة وأجزاء المسار وأي قيمة ستُضمَّن داخل URL. ستُرمِّز / و ? و # و & وسائر الأحرف المحجوزة.
encodeURI()
تحافظ على بنية URL الكاملة بترك الأحرف المحجوزة (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) دون ترميز. استخدمها فقط حين يكون لديك URL كامل بتركيب تريد الحفاظ عليه وتحتاج فقط لترميز الأحرف غير ASCII أو غير المشروعة الموجودة فيه.

حالات الاستخدام الشائعة

معاملات سلسلة الاستعلام
رمِّز قيم المعاملات قبل إلحاقها بعنوان URL: name=John%20Doe بدلاً من name=John Doe. المسافات والأحرف الخاصة غير المرمَّزة ستكسر محللات URL وتنتج نتائج غير متوقعة.
بناء طلبات API
تتطلب واجهات REST API معاملات استعلام مرمَّزة بشكل صحيح. يمنع ترميز القيم باستخدام encodeURIComponent حقن معاملات إضافية عبر أحرف مثل & و = المضمّنة في القيم.
إرسال بيانات النموذج
تُرسل نماذج HTML البيانات بصيغة application/x-www-form-urlencoded افتراضياً. يساعد فهم الترميز المئوي في تصحيح أخطاء ما يُرسله المتصفح وما يستقبله الخادم.
أجزاء المسار ذات الأحرف الخاصة
يجب ترميز أسماء الملفات أو المعرّفات التي تحتوي على مسافات أو شُرَط مائلة أو أحرف unicode مئوياً حين تُستخدم كأجزاء مسار URL: /files/my%20document.pdf.
OAuth ورموز المصادقة
يتطلب OAuth 1.0a وبعض بروتوكولات المصادقة بناء السلسلة الأساسية من أسماء وقيم معاملات مرمَّزة مئوياً وفق خوارزمية تسوية صارمة.
الروابط العميقة وعناوين URL القابلة للمشاركة
عند توليد عناوين URL قابلة للمشاركة تحمل محتوى المستخدم (استعلامات البحث وحالة الفلاتر والإحداثيات)، رمِّز جميع القيم الديناميكية لمنع الروابط المعطوبة وهجمات XSS عبر التلاعب بعناوين URL.

أمثلة الشيفرة

كيفية ترميز سلاسل URL في اللغات والبيئات الشائعة:

JavaScript (browser / Node.js)
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"

// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"

// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spaces
Python
from urllib.parse import quote, urlencode, quote_plus

# Encode a path segment or query value
quote('hello world & more')          # → 'hello%20world%20%26%20more'

# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world')            # → 'hello+world'

# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'})  # → 'q=hello+world&lang=en'
Node.js (URL API)
const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en
CLI (curl / bash)
# curl automatically percent-encodes --data fields
curl -G "https://example.com/search" --data-urlencode "q=hello world & more"

# Manual encoding with Python one-liner
python3 -c "from urllib.parse import quote; print(quote('hello world'))"

مُشفِّر URL مقابل البدائل

يمكن لأدوات عدة ترميز النص بالنسبة المئوية، غير أنها تتفاوت من حيث التحكم والخصوصية والسياق.

هذه الأداة
مستندة إلى المتصفح، فورية، خاصة. تدعم وضعَي encodeURIComponent وencodeURI. لا تُرسَل أي بيانات إلى أي خادم. تعالج إدخالات Unicode الكاملة.
شريط عنوان المتصفح
تُرمِّز المتصفحات عناوين URL تلقائيًا عند لصقها، لكن بشكل جزئي فحسب — إذ تحتفظ بكثير من الأحرف الخاصة للحفاظ على القابلية للقراءة. وهي غير مناسبة لترميز قيم المعاملات.
URLSearchParams / urllib
النهج البرمجي الصحيح لبناء عناوين URL في JavaScript أو Python. استخدم هذه الأداة للترميز السريع لمرة واحدة أو للتحقق مما سيُنتجه الكود.

الأسئلة الشائعة

ما الفرق بين %20 و + للمسافات؟
كلاهما يمثل مسافة لكن في سياقات مختلفة. %20 هو التمثيل المئوي القياسي للمسافة وهو صالح في أي مكان في URL. يمثل + المسافة فقط في صيغة application/x-www-form-urlencoded (إرسال نماذج HTML). في مسار URL أو قيمة استعلام خام، + هو علامة الجمع الحرفية لا مسافة. استخدم %20 لضمان أقصى توافقية.
متى أستخدم encodeURIComponent مقابل encodeURI؟
استخدم encodeURIComponent للقيم المفردة (معاملات الاستعلام وأجزاء المسار وأجزاء التجزئة). استخدم encodeURI فقط حين تمتلك URL كاملاً وتريد الحفاظ على بنيته. الخطأ الشائع هو استخدام encodeURI على قيمة استعلام — سيُبقي & و = دون ترميز مما يكسر سلسلة الاستعلام.
هل يتعامل ترميز URL مع أحرف Unicode؟
نعم. تُحوَّل الأحرف غير ASCII أولاً إلى تمثيل البايت UTF-8 الخاص بها، ثم يُرمَّز كل بايت مئوياً. على سبيل المثال، علامة اليورو (U+20AC) تُرمَّز إلى %E2%82%AC — بايتاتها الثلاثة UTF-8. يتعامل كلٌّ من encodeURIComponent وencodeURI مع هذا بشكل صحيح في جميع المتصفحات الحديثة.
هل الترميز المزدوج يمثل مشكلة؟
نعم. إن رمَّزت سلسلة مرمَّزة بالفعل، سيصبح %20 هو %2520 (إذ يُرمَّز % نفسه إلى %25). رمِّز دائماً القيم الخام لا المرمَّزة مسبقاً. عند الشك، افكّ الترميز أولاً ثم أعد الترميز.
ما الأحرف الآمنة دائماً في عناوين URL؟
الأحرف غير المحجوزة التي يحددها RFC 3986 آمنة دائماً ولا تحتاج أبداً إلى ترميز: الأحرف الكبيرة A–Z والصغيرة a–z والأرقام 0–9 والشرطة (-) والشرطة السفلية (_) والنقطة (.) والتيلدا (~). كل ما عدا ذلك يجب ترميزه مئوياً حين يُستخدم كقيمة لا كمحدد بنيوي.
لماذا تحتوي بعض عناوين URL على ست عشري بالأحرف الكبيرة (%2F) وأخرى بالصغيرة (%2f)؟
كلاهما صحيح. يحدد RFC 3986 أن تسلسلات الترميز المئوي غير حساسة لحالة الأحرف، لذا %2F و%2f متكافئان. غير أن RFC ذاته يوصي باستخدام الأرقام الست عشرية الكبيرة لضمان الاتساق. تنتج معظم المتصفحات والمكتبات الأحرف الكبيرة.
هل تُرمِّز هذه الأداة رابط URL الكامل أم المعاملات فحسب؟
كلاهما. استخدم وضع encodeURIComponent لترميز قيم معاملات الاستعلام الفردية (حالة الاستخدام الأكثر شيوعًا). استخدم وضع encodeURI لترميز رابط URL كامل مع الحفاظ على أحرفه البنيوية مثل ://، و?، و#، و&.
هل ثمة حد لطول النص المُرمَّز؟
لا يوجد حد من جانب الخادم — تعمل الأداة بالكامل في متصفحك. تعتمد الحدود العملية على ذاكرة متصفحك. للمدخلات الكبيرة جدًا أو المعالجة الدُّفعية، استخدم encodeURIComponent في نص برمجي.