شرح ترميز الروابط (URL Encoding) والأخطاء الشائعة
لا أحد يبحث عن ترميز الروابط للمتعة. يبحث عنه لأن رابطاً انكسر، أو لأن معامل استعلام وصل مشوّهاً، أو لأن رابطاً كان ينبغي أن يعمل أرجع خطأ. هذا المقال يشرح ترميز النسبة المئوية عبر الأخطاء التي يسببها، ومن المهم قول الأمر مكاشفةً: أغلب مشاكل الروابط لا تأتي من صعوبة الترميز، بل من حدوثه في اللحظة الخطأ. يمكنك ترميز الروابط وفك ترميزها داخل المتصفح، أو متابعة القراءة لمعرفة القواعد التي تمنع الانكسار.

نُشر في 19 سبتمبر 2026
ترميز الروابط — ويُسمى أيضاً ترميز النسبة المئوية — هو النظام الذي يتيح للرابط أن يحمل حروفاً لم يُصمَّم لاحتوائها أصلاً. الرابط، في جوهره، سلسلة من حروف ASCII صارمة التنسيق. في اللحظة التي تحتاج فيها إلى وضع مساحة أو حركة أو رمز تعبيري أو كلمة عربية، تواجه مشكلة: هذه الحروف ليست في مجموعة ASCII، وعدد من علامات الترقيم محجوز بالفعل للبنية.
والحل هو الاستبدال. أي حرف لا يمكن أن يظهر حرفياً يُستبدل بـ علامة نسبة مئوية متبوعة برقمين سداسي عشري، يمثلان قيمة بايت ذلك الحرف. المساحة هي %20، وعلامة الاستفهام هي %3F، والهاشتاغ هو %23، والعلامة & هي %26. قراءة وكتابة هذه التهربات هو بالضبط ما يفعله مُرمِّز الروابط.
ثلاث أفكار تفسّر كل أخطاء الترميز التي ستقابلك. الترميز حساس للسياق — تختلف القواعد بين المسار وسلسلة الاستعلام. والترميز مُكرِّر النتيجة حين يُفعل مرة واحدة — ترميز قيمة مرمَّزة مرة ثانية ينتج قيمة مكسورة. والترميز يجب أن يحترم البنية — الحروف التي تبني الرابط يجب ألا تُرمَّز أبداً، لأن ترميزها يحوّلها إلى بيانات.
بقية هذا المقال تستعرض أي الحروف آمنة، وكيف يختلف المسار عن سلسلة الاستعلام، ولماذا لا يستبدل + بـ %20، وكيف يعالج UTF-8 اللغات غير اللاتينية، وخطأ الترميز المزدوج وبصمته المميزة، ومتى لا ينبغي الترميز إطلاقاً. وإن كنت تحتاج فقط إلى تحويل، فإن مُرمِّز ومُفكِّك الروابط يفعله فوراً داخل متصفحك.
لماذا تحتاج الروابط إلى الترميز أصلاً؟
الرابط ليس حقل نص حر؛ بل عنوان مُنظَّم له قواعد نحوية. فالحروف ؟ و & و = و # و / و % محجوزة، أي أنها لها وظائف بنائية. فالـ ؟ يحدد где ينتهي المسار ويبدأ الاستعلام؛ و & يفصل بين المعاملات؛ و = يفصل المعامل عن قيمته؛ و # يبدأ القسم (fragment).
في اللحظة التي يظهر فيها أحد هذه الحروف داخل بياناتك، يصبح الرابط ملتبساً. فالبحث عن a&b سيُقرأ كمعاملين، وقيمة تحتوي على # ستقطع كل ما بعدها إلى قسم لن يصل إلى الخادم أبداً. وترميزها — a%26b — يزيل الالتباس، لأن %26 لا يمكن أن يعني سوى «حرف العلامة &» ولن يعني أبداً «ابدأ معاملاً جديداً».
وينطبق الأمر ذاته على الحروف الممنوعة ببساطة. فالروابط معرَّفة على مجموعة ASCII محدودة، لذا لا يمكن أن تظهر مساحة أو حرف تحكم أو أي شيء غير لاتيني حرفياً دون تهريب. وترميز النسبة المئوية هو الآلية الوحيدة التي تعالج الحالتين معاً: الحروف المحجوزة التي قد تُفهم خطأً، والحروف التي لا يمكن كتابتها أصلاً.
أي الحروف يمكن تركها كما هي؟
هناك مجموعة صغيرة من الحروف لا تحتاج أبداً إلى ترميز، تُعرف بـ الحروف غير المحجوزة. حفظها يوفر الكثير من الحيرة، لأن أي شيء في هذه المجموعة يعني نفسه تماماً في كل مكان بالرابط:
| المجموعة | الحروف | ترميز؟ |
|---|---|---|
| الحروف | A–Z و a–z | لا |
| الأرقام | 0–9 | لا |
| أربع علامات ترقيم آمنة | - _ . ~ | لا |
| حروف بنائية محجوزة | / ؟ # & = : % | فقط حين تكون بيانات، لا بنيةً أبداً |
| كل ما سوى ذلك | مسافات، حركات، لغات غير لاتينية، رموز تعبيرية، +، & داخل قيمة | نعم |
لاحظ الصف الأخير: الحروف المحجوزة مشروطة. فالـ / التي تفصل بين أجزاء المسار يجب أن تبقى حرفية، لكن / داخل اسم ملف يجب أن تُرمَّز كـ %2F وإلا ستُقرأ كمستوى مجلد إضافي. هذه القاعدة المشروطة — البنية مقابل البيانات — هي جوهر اللعبة كاملةً.
المسار مقابل سلسلة الاستعلام: القواعد تختلف
للرابط مناطق متمايزة، وقواعد الترميز ليست موحدة عبرها. فالجزء قبل ؟ هو المسار، وكل ما بعده هو سلسلة الاستعلام. وتطبّق المتصفحات والخوادم ومكتبات التحليل اصطلاحات مختلفة على كل منهما، وهو مصدر خفي للأخطاء.
- في المسار، يجب ترميز المساحة كـ
%20. أما+في المسار فهو علامة زائد حرفية، لا مساحة. - في سلسلة الاستعلام، يمكن لكل من
%20و+أن يعني مساحة، لكن فقط لأن سلاسل الاستعلام تتبع تقليدياً اصطلاحapplication/x-www-form-urlencodedالخاص بنماذج HTML. - أدوات فك الترميز تختلف. فـ
URLSearchParamsفي جافاسكربت تحوّل+إلى مساحة، بينماdecodeURIComponentتترك+كعلامة زائد حرفية. اخلطهما، وسيعطيك الرابط نفسه قيمتين مختلفتين.
الخلاصة العملية هي أن تعرف لأي منطقة تُرمِّز، وتفك الترميز بالأداة المطابقة. فإن كانت قيمة ما تعود محرَّفة بينما يبدو النص صحيحاً، فتحقق إن كانت + طفيلية تُفسَّر كمساحة في مكان وكعلامة زائد في مكان آخر.
فخ + مقابل %20
هذا يستحق قسماً مستقلاً لأنه أكثر أخطاء الترميز شيوعاً، وهو خفي حتى يقع عليك. فكلا + و %20 يمكن أن يمثل مساحة — لكن داخل سلسلة الاستعلام فقط، وتحت اصطلاح ترميز النماذج.
اصطلاح + يأتي من إرسال نماذج HTML. حين يرسل نموذج بياناته كـ application/x-www-form-urlencoded، تُكتب المسافات في قيم الحقول كـ +. وانتقل هذا الاصطلاح إلى سلاسل الاستعلام، ولهذا فإن ?q=hello+world و ?q=hello%20worldيصلان معاً كـ «hello world» على أغلب الخوادم.
ووضع الفشل خفي. فإن رمَّزت النص الحرفي 1+1 لأنك تريد لعلامة الزائد أن تنجو، تحصل على 1%2B1 — صحيح. لكن إن استبدلت المسافات ساذجاً بـ + في مسار، أو تركت أداة فك ترميز النماذج تلمس قيمة كان + فيها مقصوداً حرفياً، تحصل على فساد صامت: «1 1» بدلاً من «1+1».
العادة الآمنة هي استخدام %20 للمسافات في كل مكان، فهي غير ملتبسة في كل المناطق، وحصر + للحالة المحددة لترميز النماذج حيث تعرف أن المستلم ينتظرها. وعند التنقيح، تذكَّر عدم التماثل: URLSearchParams تفك + كمساحة، أما decodeURIComponentفلا.
UTF-8 والحروف واللغات غير اللاتينية
النص غير اللاتيني يضيف التفافاً يفاجئ الجميع في المرة الأولى. الرابط من ASCII، لذا يجب أولاً تحويل الحرف المشدَّد أو الحرف العربي إلى بايتات — في UTF-8 — ثم يُرمَّز كل بايت على حدة بنسبة مئوية.
الكلمة الفرنسية café تُرمَّز إلى caf%C3%A9: فحروف ASCII تمر دون تغيير، بينما الـ é بايتان في UTF-8، فتعطي %C3 و %A9. والكلمة العربية تتمدد أكثر — فكل حرف عدة بايتات، لذا تتحول كلمة قصيرة إلى سلسلة طويلة من مجموعات النسبة مثل %D9%85%D8%B1....
- الحرف الواحد قد يكون مجموعات عدّة. لا تفترض أبداً أن مجموعة نسبة واحدة تساوي حرفاً واحداً؛ عُد البايتات لا التهربات.
- طقم المحارف الخطأ يفسد النص. إن فكَّ الخادم البايتات بترميز ذي بايتة واحدة بدلاً من UTF-8، تتحول الحركات إلى رموز غريبة. وUTF-8 هو الافتراضي لسبب — تمسَّك به إلا إن كان لديك سبب قديم محدد لغير ذلك.
- المتصفحات الحديثة تخفي هذا. فهي تعرض روابط مقروءة وتقوم بالترميز عند الإرسال، لذا يبدو رابط عربي مُلصَق نظيفاً في شريط العنوان رغم أن الطلبية على السلك مرمَّزة بنسبة مئوية. هذه الفجوة بين العرض والسلك هي بالضبط لماذا يلجأ أحياناً إلى مُرمِّز صريح.
هذه أيضاً الحالة التي تفيد فيها الأداة المخصصة أكثر، لأن ترميز النص غير اللاتيني يدوياً عرضة للأخطاء. فـ مُرمِّز الروابط يحوّل النص إلى صيغته الصحيحة بنسبة UTF-8 وبالعكس.
خطأ الترميز المزدوج وبصمته
الترميز المزدوج هو الخطأ الذي يستمر في العطاء، لأنه ينتج رابطاً يبدو مرمَّزاً ومع ذلك يصل خطأ. يحدث حين تُرمَّز قيمة مرمَّزة بالفعل مرة أخرى — وشائع حين تمرر دالة قيمة إلى أخرى دون أن تعلم أن الأولى قد هرَّبتها.
تابع الحساب. المساحة تصبح %20. رمِّز هذا الناتج مرة أخرى فيُرمَّز علامة النسبة المئوية نفسها، لأن % حرف محجوز: فتصبح %20 هي %2520. وجولة واحدة من فك الترميز الآن تعطي السلسلة الحرفية %20 بدلاً من مساحة، لأن القيمة كانت تحوي علامة نسبة حقيقية.
| المدخل | مرمَّز مرة | مرمَّز مرتين (خطأ) |
|---|---|---|
| مساحة | %20 | %2520 |
| علامة & | %26 | %2526 |
| شرطة مائلة | %2F | %252F |
البصمة الدالة هي %25 حيث يجب أن تكون % — فـ %2520 و %2526 و %252F كلها قيم مرمَّزة مرتين. إن رأيتها، فقد رُمِّزت القيمة مرتين.
العلاج هو فك الترميز بالعدد الدقيق لمرات الترميز، لكن العلاج الأفضل هو المنع: رمِّز القيمة الخام مرة واحدة، عند الحد الذي تدخل منه الرابط، وامتلك مصدراً واحداً للحقيقة حول كون القيمة مرمَّزة. الدوال التي «بلطف» تُعيد ترميز مدخلاتها هي الجانية المعتادة.
متى لا ينبغي لك الترميز؟
الترميز أداة، لا سياسة «رمِّز كل شيء، احتياطاً». مطبَّقٌ بشكل أعمى يكسر الروابط نفسها التي كان يُفترض أن يحميها، لأن الحروف البنائية هي ما يجعل الرابط قابلاً للتحليل أصلاً.
- لا ترمِّز الهيكل البنائي أبداً. فـ
://بعد المخطط، وشرطات/بين أجزاء المسار، وعلامات؟&=#الخاصة بسلسلة الاستعلام يجب أن تبقى حرفية. رمِّزها ويتوقف العنوان عن كونه عنواناً. - لا ترمِّز قيمة مرمَّزة بالفعل أبداً. هذا هو خطأ الترميز المزدوج في القسم السابق، وهو خطأ يصنعه الإنسان ضد نفسه بالكامل.
- لا ترمِّز «لتنظيف» رابط لا تفهمه. إن كان الرابط يفشل أصلاً، فإن ترميز المزيد عشوائياً نادراً ما يساعد وكثيراً ما يخفي المشكلة الحقيقية. فُك ترميزه بالكامل أولاً، وانظر ما القيم الخام فعلاً، ثم رمِّز مرة واحدة.
النموذج الذهني الذي يستحق الاحتفاظ به: رمِّز القيمة، ولا ترمِّز البنية أبداً. ابنِ الرابط من أجزاء تثق بها، رمِّز كل قيمة بيانات مرة واحدة بالضبط أثناء دخولها، ودع المُحدِّدات تقوم بعملها.
أين يظهر هذا عملياً
هذه هي المواقف التي يكلِّف فيها خطأ الترميز وقتاً حقيقياً، وحيث تُؤتي معرفة القواعد ثمارها.
- معاملات البحث. صندوق بحث يحوي
&أو=سينقسم إلى معاملات إضافية ما لم تُرمَّز القيمة. بُناة سلاسل الاستعلام في الأطر تعالج هذا عادة؛ أما拼接 السلاسل فلا. - روابط التتبع. تحمل معاملات UTM عناوين وأسماء حملات تحتوي routinely على مسافات وحركات. مساحة واحدة غير مرمَّزة في رابط بريد، وينكسر الرابط كاملاً لكل متلقٍّ ينقر عليه.
- طلبات الـAPI. تستقبل الـAPIs القيم كمعاملات رابط، و
#غير مرمَّز يقطع الطلبية بصمت، بينما+حرفية تصبح مساحة. الترميز هنا ليس اختيارياً — بل جزء من العقد. - إعادة التوجيه والروابط المُمرَّرة. حين يُمرَّر رابط داخل رابط آخر، يجب ترميزه كقيمة واحدة، وإلا أساء الرابط الخارجي قراءة مُحدِّدات الرابط الداخلي.
كل هذه الحالات هي الخطأ نفسه بحلل مختلفة: قيمة لم تُرمَّز حيث اقتضى ذلك النحو، أو رُمِّزت مرتين بسبب كود لم يثق بالخطوة الأخيرة.
رمِّز أو فُك ترميز رابط بلا تعقيد
أيًّا كانت مشكلة الرابط، فالتحويل نفسه ينبغي أن يستغرق ثوانٍ:
- مُرمِّز ومُفكِّك روابط مجاني يتعامل مع ترميز النسبة المئوية في الاتجاهين.
- معالجة صحيحة لـ UTF-8 للحروف والعربية واللغات غير اللاتينية.
- يعمل بالكامل داخل متصفحك — لا يُرفع شيء مما تلصقه.
- جزء من مجموعة أدوات النصوص الأوسع: عدّاد الكلمات وعدّاد الأحرف ومحوّل حالة الأحرف ومُرمِّز Base64.
جرِّب مُرمِّز الروابط
الصق نصاً تحصل على رابط صالح. الصق رابطاً مرمَّزاً تستعيد النص. كل شيء يتم في متصفحك.
ترميز / فك ترميز رابطالأسئلة الشائعة
ماذا يعني ترميز الرابط؟▾
ترميز الرابط يعني استبدال الحروف غير المسموح بها، أو التي تحمل معنىً بنائياً خاصاً، بعلامة نسبة مئوية متبوعة برقمين سداسي عشري — فالمساحة مثلاً تصبح %20 والعلامة & تصبح %26. هذا يبقي الرابط صالحاً وغير ملتبس أثناء عبوره عبر المتصفحات والخوادم وواجهات الـAPI، وهو ما يسمح للقيم باحتواء علامات ترقيم أو لغات غير لاتينية دون أن تنكسر الطلبية.
ما الفرق بين %20 و + في الرابط؟▾
كلاهما يمثل مساحة، لكن في السياق الصحيح فقط. %20 هو الترميز القياسي للمساحة ويصح في أي مكان بالرابط. أما اصطلاح + فيأتي من صيغة application/x-www-form-urlencoded المستخدمة في إرسال نماذج HTML، حيث يعني مساحة داخل سلسلة الاستعلام فقط. أما + في المسار فهو علامة زائد حرفية. وتختلف أدوات فك الترميز أيضاً: URLSearchParams تحوّل + إلى مساحة، بينما decodeURIComponent تتركه علامة زائد حرفية — فخلطهما ينتج قيماً خاطئة.
كيف أعرف إن كان الرابط مرمَّزاً مرتين؟▾
ابحث عن تسلسلات حيث تم ترميز علامة النسبة المئوية نفسها، فتظهر على هيئة %25 متبوعة برقمين سداسي عشري — والعلامة الكلاسيكية هي %2520 حيث كان المقصود %20، أو %252F بدلاً من %2F. تحتوي القيمة حرفياً على علامة نسبة مئوية بعد جولة واحدة من فك الترميز. يحدث ذلك حين تُرمَّز قيمة مرمَّزة بالفعل مرة ثانية، والعلاج هو فك الترميز بالعدد الدقيق لمرات الترميز، أو الأفضل، منع الترميز المزدوج بالترميز مرة واحدة فقط.
لماذا تظهر الحروف العربية والحركات الفرنسية كـ %C3%A9 و %D9%85 في الرابط؟▾
الروابط معرَّفة على ASCII، لذا أي حرف خارجها يُحوَّل أولاً إلى بايتات في UTF-8، ثم يُرمَّز كل بايت على حدة بنسبة مئوية. الحرف é المُشدَّد بايتان في UTF-8، فيعطي %C3%A9. والحرف العربي أيضاً عدة بايتات، فينتج تسلسلات أطول مثل %D9%85. لهذا السبب قد يحتل حرف واحد عدة مجموعات نسبية، ولماذا فإن فك الترميز بطقم محارف خاطئ يفسد النص.
أي الحروف يمكنني تركها دون ترميز في الرابط؟▾
مجموعة الحروف غير المحجوزة آمنة دائماً: الحروف الكبيرة A–Z والصغيرة a–z، والأرقام 0–9، وعلامات الترقيم الأربع - _ . ~ (الواصلة، التحتي السفلي، النقطة، المدّة). كل ما سوى ذلك — المسافات والحركات واللغات غير اللاتينية والحروف المحجوزة مثل ؟ & = # % — يجب ترميزه حين يظهر بياناتً لا بنيةً للرابط.
متى لا ينبغي لي ترميز الرابط؟▾
لا ترمِّز الحروف البنائية التي تعطي الرابط شكله — فاصل المخطط ://، وشرطات المسار، وعلامات ؟ & = # التي تحدّد سلسلة الاستعلام — لأن ترميزها يحوّلها إلى بيانات ويكسر العنوان. وتجنّب أيضاً ترميز قيمة مرمَّزة بالفعل، مما يخلق خطأ الترميز المزدوج. القاعدة هي ترميز القيمة الخام مرة واحدة، عند الحد الذي تدخل منه الرابط، وترك البنية المحيطة كما هي.
Similar articles
View all
Work with permitted TikTok content using RMBG.PRO. Check public TikTok links, convert videos to MP4 or WebM, extract MP3 or WAV audio, and choose quality presets.

Travaillez avec du contenu TikTok autorisé grâce à RMBG.PRO. Vérifiez les liens publics, convertissez en MP4 ou WebM, extrayez l’audio MP3 ou WAV et choisissez la qualité.

Trabaja con contenido TikTok permitido en RMBG.PRO. Revisa enlaces públicos, convierte a MP4 o WebM, extrae audio MP3 o WAV y elige la calidad.