أداة encodeURIComponent
تصبح المسافة %20 و& تصبح %26 و= تصبح %3D، فتتحول hello world & café إلى hello%20world%20%26%20caf%C3%A9 وتستقر داخل قيمة استعلام واحدة. كل قيمة تخضع لقواعد encodeURIComponent، والفك يعكسها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- hello world & café
- الإنتاج
- hello%20world%20%26%20caf%C3%A9
- وضع الحساب
- Encode
- المُدخَل
- hello world & café
- الطول
- 31
عندما تبني سلسلة استعلام، يكفي رمز عطف أو مسافة واحدة غير مُرمَّزة لتقسيم معامل وكسر تكامل بأكمله. تطبّق أداة encodeURIComponent هذه القواعد نفسها التي تعتمدها دالّتا encodeURIComponent وdecodeURIComponent في JavaScript: تتحوّل الرموز المحجوزة إلى تسلسلات مُرمَّزة بالنسبة المئوية عند الخروج، وتعود تسلسلات %XX الصحيحة نصًّا مقروءًا عند الرجوع. استخدمها لتجهيز القيم قبل دخولها إلى عنوان URL، ولعكس الترميز من السجلّات أو حمولات الأطراف الثالثة، وللحصول على نتيجة حتمية سواء نفّذتها مجانًا في المتصفّح أو استدعيت واجهة KIT البرمجية.
ما الذي يحميه encodeURIComponent فعليًّا
عنوان URL الكامل ليس كتلة مبهمة واحدة. فللمخطّطات وفواصل المسار ومحدّدات الاستعلام وعلامات الجزء معنى بنيوي. وencodeURIComponent هي الدالّة التي تستعملها حين يجب أن تنتقل القيمة كبيانات داخل تلك البنية دون إعادة كتابة البنية نفسها.
تصبح المسافات %20، ورموز العطف %26، وعلامات المساواة %3D، ويُوسَّع النصّ غير الـ ASCII مثل الأحرف المُشكَّلة أو الرموز التعبيرية إلى تسلسلات UTF-8 بالنسبة المئوية كي لا تسيء الوسائط والخوادم قراءة حدود البايتات. يختلف هذا عن encodeURI التي تترك كثيرًا من الرموز المحجوزة كما هي لأنها تفترض أنك تُرمِّز عنوانًا كاملًا. فإن رمّزت رابط https:// كاملًا بقواعد المكوّن، تحوّلت النقطتان والشرطات المائلة إلى تسلسلات % وتوقّف الرابط عن العمل.
وإن تركت عبارة بحث حرّة دون ترميز ولصقتها بعد ؟، بدا رمز & المُضمَّن معاملًا جديدًا. تستعمل هذه الأداة دلالات المكوّن دائمًا كي تكون كل قيمة آمنة للوضع بعد مفتاح، أو بين أجزاء المسار حين يكون الجزء بيانات، أو داخل جسم نموذج يصير لاحقًا استعلامًا. ولا يبتكر مسار الترميز أسلوب هروب مختلفًا أبدًا: يطابق الناتج ما يعيده لوحة أوامر متصفّح حديث لـ encodeURIComponent للسلسلة ذاتها، وهذا يُبقي المنظومات المختلطة متّسقة حين تكون خدمة على Node، وأخرى أداة متصفّح، وثالثة عاملًا دفعيًّا على الحافة.
كيف تستخدم الأداة وتقرأ النتيجة
أرسل حقل نصّ يحمل السلسلة التي تعنيك وحقل mode اختياريًّا مضبوطًا على encode أو decode. الترميز هو الوضع الافتراضي: يشغّل المحرّك encodeURIComponent على المدخل ويعيد الوضع، والمدخل الأصلي، والناتج المحوَّل، وطول الناتج كي تتحقّق خطوط الأنابيب من ميزانيات الحجم دون تمريرة ثانية. ويشغّل فكّ الترميز decodeURIComponent ويعيد الشكل نفسه مع السلسلة المستردّة في output.
السلاسل الفارغة صحيحة وتعود فارغة بعد الدورة. وتُحوَّل الأعداد والقيم المنطقية إلى نصّ بالطريقة نفسها التي تُنصِّص بها JavaScript قبل الترميز، وهذا يعين الاختبارات السريعة للواجهة. كما يفشل غياب النصّ في التحقّق قبل تشغيل أي تحويل.
أين يناسب ترميز المكوّن سير العمل الحقيقي
الخطّافات الصادرة هي الحالة الكلاسيكية: يجب أن يستقرّ بريد عميل أو موضوع تذكرة أو وسم نصّ حرّ داخل عنوان استدعاء دون كسر محلِّل المُستقبِل. وتبني واجهات البحث والتصفية روابط قابلة للمشاركة من عبارات كتبها المستخدم تحوي مسافات وعلامات اقتباس وكتابات غير لاتينية؛ وترميز كل حقل قبل التجميع يُبقي الرابط المشترك ثابتًا عبر عملاء البريد وتطبيقات المحادثة التي تعيد كتابة الروابط المجرّدة.
وكثيرًا ما تُظهر أدوات السجلّات والدعم أسطر طلب خامًا فيها تسلسلات النسبة المئوية؛ وفكّ ترميز تلك القيم يستردّ عبارات البحث أو أسماء الملفات الأصلية للتحقيق دون لصقها في لوحة أوامر عابرة. وتعكس عمليات ترحيل البيانات الأعمدة المُرمَّزة مرّتين حين رمّزت المُصدِّرات القديمة مرّتين، أو تطبّق ترميز مكوّن واحدًا متّسقًا عند تخزين قيم ستُدمَج لاحقًا في عمليات إعادة توجيه. وتستعمل قوائم مراجعة التدريس والشيفرة مرجع encodeURIComponent موثوقًا كي يقارن المطوّرون المبتدئون المساعِدات الخاصّة باللغات بالمعيار المرجعي لـ JavaScript ويكتشفوا المكتبات التي تعامل رموز الجمع أو التلدة معاملة مختلفة.
حالات الاستخدام
قيم معاملات استعلام آمنة
رمّز عناوين البريد والأسماء ومرشِّحات النصّ الحرّ قبل إلحاقها بأزواج ?key=value كي لا تقسم الرموز المحجوزة سلسلة الاستعلام أبدًا.
فكّ ترميز سجلّات الطلبات والتصديرات
أعِد أجزاء المسار أو الاستعلام المُرمَّزة بالنسبة المئوية من سجلّات الوصول وتصديرات CSV إلى نصّ UTF-8 مقروء للدعم والتحليلات.
فحوص التكافؤ عبر المنظومات
قارن مُرمِّز URL في لغة أخرى بناتج encodeURIComponent في JavaScript كي تتّفق الخدمات المصغّرة المختلطة على قواعد الهروب.
الأسئلة الشائعة
ما الفرق بين encodeURIComponent وencodeURI؟
يهرّب encodeURIComponent الرموز المحجوزة مثل & و= و؟ و/ كي تكون القيمة آمنة كبيانات. أما encodeURI فيترك رموز البنية تلك كما هي للعناوين الكاملة. تستعمل هذه الأداة دلالات المكوّن دائمًا.
ماذا يحدث إن كان مدخل فكّ الترميز مشوّهًا؟
أصلِح السلسلة أو عامِلها كبيانات مبهمة بدل فكّ ترميزها.
هل تتعامل مع اليونيكود والرموز التعبيرية؟
نعم. يستعمل الترميز تسلسلات UTF-8 بالنسبة المئوية مطابقة لـ encodeURIComponent في JavaScript، فيعود النصّ المُشكَّل والرموز التعبيرية سليمة عند فكّ الترميز.
هل أرمّز الاستعلام كله أم كل قيمة على حدة؟
رمّز كل قيمة وحدها ثم اجمع القيم بعلامتي & و= العاديتين. فترميز استعلام مكتمل يرمّز الفواصل أيضًا، فلا يعود الخادم المستقبل يعرف أين تنتهي قيمة وتبدأ التي تليها.
لماذا يتوقف الرابط الكامل عن العمل إذا رمّزته؟
لأن هذه القواعد مخصصة لقيمة واحدة، فهي ترمّز النقطتين والشرطات المائلة أيضًا، فتتحول بداية العنوان https:// نفسها إلى تسلسلات % لا يفهمها المتصفح. رمّز القيم فقط واترك هيكل العنوان كما هو.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/url-component \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"hello world & café"}'const res = await fetch("https://api.kit.forhosting.com/enc/url-component", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "hello world & café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/url-component",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "hello world & café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/url-component", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"hello world & café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"hello world & café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/url-component", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "hello world & café"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.url_component",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
كيف تستدعي نقطة النهاية وتقرأ النتيجة
أما تسلسلات النسبة المئوية المشوّهة عند فكّ الترميز، مثل علامة % وحيدة أو ذيل %X ناقص، فترفع invalid_input برسالة تسمّي فشل الفكّ؛ ولا تُحاسَب تلك المهام. ولأن المسار تحليل صرف بلا شبكة ولا نموذج ولا ساعة ولا مصدر عشوائي، يعطي الزوج نفسه من النصّ والوضع كائن JSON نفسه على أداة المتصفّح المجانية وعلى الـ API المدفوعة. وبسعر $0.002 لكل طلب ناجح يتتبّع السعر تحويلًا صغيرًا على الحافة، فتُرمِّز آلاف قيم الاستعلام في مهمّة تنظيف دون مفاوضة على الشرائح. فضِّل ترميز كل قيمة ثم الوصل برمزَي & و= الحرفيَّين، بدلًا من ترميز سلسلة استعلام مبنيّة سلفًا، كي تبقى المحدِّدات بنيوية ولا يُهرَّب سوى رموز الحمولة.
أين يناسب ترميز المكوّن سير العمل الحقيقي
في كل حالة العقد نفسه: ترميز أو فكّ ترميز مكوّن، فشل قاطع عند إدخال نسبة مئوية سيّئ، ناتج مُهيكَل تتحقّق منه في اختبارات ذهبية، وسلوك مطابق مجانًا في المتصفّح أو عبر رصيد KIT المدفوع مسبقًا على الـ API.
أسئلة تقنية
هل أستطيع الترميز وفكّ الترميز بنقطة النهاية نفسها؟
نعم. اضبط mode على encode (الافتراضي) أو decode. تتضمّن الاستجابة دائمًا mode وinput وoutput وlength.
هل أداة encodeURIComponent مجانية؟
أداة المتصفّح مجانية وتعمل محليًّا. تستعمل استدعاءات الـ API رصيد KIT المدفوع مسبقًا بالسعر الأساس المنشور $0.002؛ ولا يُحاسَب التحقّق الفاشل أبدًا.