البرمجة

دليل ترميز URL وفكّه: الترميز المئوي والمسافات وUTF-8

ToolMellow ·

يمثّل ترميز URL بايتات معينة بتسلسلات هروب مئوية، كي يلائم النص الجزء المقصود من الرابط أو قيمة النموذج. يوفر ToolMellow ثلاثة أنماط: جزء من رابط، وقيمة نموذج، والرابط كاملًا. الصق النص، واختر النمط، ثم اضغط «ترميز» أو «فك الترميز». يجري التحويل محليًا ولا يفتح العنوان أو يجلبه أو يتحقق من صحته.

تعتمد النتيجة المناسبة على موضع استخدام النص. فقيمة استعلام واحدة، وسلسلة استعلام كاملة، ورابط مجمّع بالفعل مدخلات مختلفة. يقدم الدليل أمثلة دقيقة ويشرح UTF-8 والأخطاء الشائعة، ويساعدك على تجنب تغيير الفواصل أو فك طبقات أكثر من المقصود. عناوين الأمثلة ونتائجها توضيحية، وليست موارد جرى جلبها.

ترميز URL وفكّه

كيفية ترميز نص URL أو فكّه

افتح أداة ترميز URL وفكّه، والصق القيمة الكاملة المراد تحويلها. ضمن «نمط الترميز»، اختر «جزء من رابط (%20 للمسافات)» أو «قيمة نموذج (+ للمسافات)» أو «الرابط كاملًا (مع حفظ الفواصل)». يعمل «ترميز» و«فك الترميز» على كامل إدخال المحرر؛ ولا تبدأ الكتابة وحدها تحويلًا.

اقرأ الناتج قبل استخدام «انسخ النتيجة» أو «تنزيل». يتيح «استخدم النتيجة كإدخال» تطبيق عملية أخرى إذا كانت النتيجة ضمن حد الإدخال. يؤدي تغيير الإدخال أو نمط الترميز إلى مسح النتيجة السابقة. يغيّر «التفاف الأسطر» العرض فقط، ولا يُدرج فواصل أسطر أو يغيّر تسلسلات الهروب المئوية.

  • لقيمة استعلام أو جزء مسار واحد، اختر نمط الجزء بدل ترميز استعلام مجمّع كاملًا.
  • استخدم نمط قيمة النموذج فقط عندما تتوقع الصيغة المستقبِلة قواعد قيم application/x-www-form-urlencoded.
  • لعنوان مجمّع ينبغي أن تبقى فواصله ذات معنى، انظر في النمط الكامل؛ فهو يظل غير مخصص لتحليل الروابط أو التحقق منها.

اختر جزءًا من رابط أو قيمة نموذج أو الرابط كاملًا

يمنع ترميز الجزء علامات الترقيم المحجوزة في القيمة من العمل كبنية للرابط. يستخدم نمط قيمة النموذج قواعد ترميز النماذج لقيمة واحدة، ولا يُخرج اسم المعامل. ويحفظ نمط الرابط الكامل الفواصل مثل النقطتين والشرطة المائلة وعلامة الاستفهام والعطف والمساواة وعلامة الجزء المرجعي في النص.

اختر النمط بحسب التطبيق المستقبِل، وليس بناءً على أقصر ناتج ظاهر. قد يغيّر المعنى ترميز استعلام كامل كقيمة واحدة أو ترك الفواصل مكشوفة داخل قيمة. لا تقسم هذه الأداة الاستعلام الملصق إلى أزواج أسماء وقيم، ولا تحدد الأجزاء التي تخص المضيف أو المسار أو الاستعلام أو الجزء المرجعي.

اختر جزءًا من رابط أو قيمة نموذج أو الرابط كاملًا
النمطإدخال مناسبحدود التنفيذ
جزء من رابطقيمة استعلام أو جزء مسار واحديهرب علامات الترقيم المحجوزة؛ ويضيف هروبًا صارمًا لخمس علامات
قيمة نموذجقيمة واحدة مرمّزة للنموذجترميز URLSearchParams؛ يستبدل الفك + الحرفية قبل الفك المئوي الصارم
الرابط كاملًاعنوان مجمّع بالفعلencodeURI/decodeURI؛ مجموعته المحجوزة الخاصة، وليس تحققًا كاملًا من URL

RFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئويWHATWG URL: تحليل النماذج المرمّزة للرابط وتسلسلهاECMAScript: encodeURI وdecodeURI

كيف يمثّل الترميز المئوي البايتات؟

يتكون تسلسل الهروب المئوي من علامة نسبة مئوية تليها خانتان سداسيتان عشريتان تمثّلان بايتًا واحدًا. قد يحتاج محرف Unicode إلى عدة بايتات UTF-8، لذا قد يقابل محرفًا ظاهرًا واحدًا عدة تسلسلات هروب. المسافة في ASCII قيمتها السداسية 20، وتظهر بصيغة %20 عند ترميز الجزء والرابط الكامل؛ ويُمثّلها ترميز النموذج بـ+.

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

كيف يمثّل الترميز المئوي البايتات؟
نص الإدخالناتج الجزءناتج قيمة النموذجناتج الرابط الكامل
a b+ca%20b%2Bca+b%2Bca%20b+c
cafécaf%C3%A9caf%C3%A9caf%C3%A9
a/b?x=1#parta%2Fb%3Fx%3D1%23parta%2Fb%3Fx%3D1%23parta/b?x=1#part
~*~%2A%7E*~*
😀%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80

RFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئويWHATWG Encoding: UTF-8 وفك النصWHATWG URL: تحليل النماذج المرمّزة للرابط وتسلسلهاECMAScript: encodeURI وdecodeURI

نمط الجزء وتسلسلات الهروب الصارمة

يستخدم ترميز الجزء في ToolMellow الدالة encodeURIComponent، ويضيف هروبًا لكل من ! والفاصلة العليا و( و) و*. مجموعة ASCII التي تبقى حرفية هي الحروف والأرقام و-._~. وهذا أقرب إلى مجموعة RFC 3986 غير المحجوزة من encodeURIComponent الأصلية، التي تُبقي العلامات الخمس الإضافية دون تغيير.

مثلًا، تصبح القيمة red&blue=1 بصيغة red%26blue%3D1. يمكن تقديمها كقيمة معامل دون أن تصبح علامة العطف فاصل استعلام آخر. يستخدم فك ترميز الجزء decodeURIComponent: تُفك المحارف المحجوزة المرمّزة مئويًا، بينما تظل + الحرفية علامة جمع. لا يحلل أزواج الاستعلام أو يطبّع رابطًا كاملًا.

RFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئويECMAScript: encodeURIComponent وdecodeURIComponent

قيم النماذج: الجمع والمسافات والتلدة والنجمة

يتبع ترميز قيمة النموذج تسلسل URLSearchParams لقيمة واحدة. تصبح المسافة +، وعلامة الجمع الحرفية %2B، وتبقى النجمة الحرفية. تصبح التلدة %7E. هذه اختلافات متوقعة: فلترميز النموذج مجموعته المسموحة، وهي ليست مجموعة نمط الجزء نفسها تمامًا.

يستبدل فك الترميز أولًا علامات الجمع الحرفية بمسافات، ثم يستدعي decodeURIComponent الصارمة. لذلك تصبح a+b%2Bc بصيغة a b+c: تتحول %2B إلى علامة جمع بعد الاستبدال الأول، ولا تتحول بعدها إلى مسافة ثانية. هذا مفكّك قيمة، وليس محلل استعلام URLSearchParams المتسامح. تفشل تسلسلات الهروب غير السليمة وUTF-8 المرمّز مئويًا غير الصالح بدل إصلاحها.

WHATWG URL: تحليل النماذج المرمّزة للرابط وتسلسلهاECMAScript: encodeURIComponent وdecodeURIComponent

نمط الرابط الكامل يحفظ الفواصل وهروب مجموعته المحجوزة

يستخدم ترميز الرابط الكامل encodeURI. يحفظ الفواصل في عنوان مجمّع، مع ترميز المسافات والنص الذي يستلزم ذلك. مثلًا، يصبح https://example.com/a b?q=a+b#part بصيغة https://example.com/a%20b?q=a+b#part. تبقى علامة الجمع في هذه المرحلة؛ وتحليل التطبيق للاستعلام لاحقًا خطوة منفصلة.

يستخدم فك ترميز الرابط الكامل decodeURI، الذي يحفظ هروب مجموعته المحجوزة الخاصة ;/?:@&=+$,#. مثلًا، تبقى %2F و%26 و%23 مرمّزة، بينما تصبح %20 مسافة. لا تشمل هذه المجموعة الأقدم كل محارف RFC 3986 المحجوزة: تُفك %5B و%5D إلى أقواس مربعة، ويُرمّز النمط الكامل الأقواس المربعة الحرفية مئويًا. لا يحلل النمط رابطًا، ولا يتحقق من مضيف أو مخطط، ولا يطبّع مضيف IPv6، ولا يحوّل أسماء النطاقات عبر IDNA، ولا يجلب العنوان.

ECMAScript: encodeURI وdecodeURIWHATWG URL: تحليل URL والمضيفات وURLSearchParamsRFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئوي

UTF-8 وUnicode والتمييز بين الإدخال الخام والتسلسلات المرمّزة

يرمّز التحويل بايتات UTF-8 مئويًا للمحارف التي تحتاج إلى هروب. في café يحتاج الحرف الأخير إلى بايتين UTF-8 يمثّلهما %C3%A9؛ ويستخدم الرمز 😀 أربعة بايتات. يحسب حد المحرر وحدات ترميز UTF-16 في JavaScript، لذلك قد يختلف طول البايتات ووحدات الترميز وعدد المحارف الظاهرة. لا يطبّع هذا التحويل نص Unicode.

يرفض كل نمط ترميز وحدة Unicode بديلة غير مقترنة. ويفحص فك الرابط الكامل أيضًا الإدخال الخام أولًا للتأكد من سلامة Unicode. لا يفحص فك الجزء وقيمة النموذج السلسلة الخام بذلك الفحص المنفصل: قد تمر الوحدات الحرفية غير المرمّزة كما هي، بينما يجب أن تُفك تسلسلات البايتات المرمّزة مئويًا إلى UTF-8 صالح. لا تفسر النجاح كتحقق عام من كل محرف حرفي أو كدليل سلامة الرابط.

ECMAScript: encodeURIComponent وdecodeURIComponentECMAScript: encodeURI وdecodeURIECMAScript: String isWellFormedWHATWG Encoding: UTF-8 وفك النص

هروب غير سليم وUTF-8 غير صالح وناتج غير متوقع

يحتاج كل تسلسل هروب إلى خانتين سداسيتين عشريتين تمامًا بعد علامة النسبة، ويجب أن تستوفي تسلسلات البايتات المرمّزة قواعد UTF-8 للمفكّك. تصبح علامة النسبة الحرفية المراد ترميزها %25؛ وتكون علامة النسبة المنفردة في إدخال فك الترميز خطأ. لا تحذف الأداة المسافات بصمت، ولا تكرر فك الترميز حتى يبدو النص مقروءًا.

افحص النمط والقيمة الأصلية كاملة قبل تغيير المحارف. المسافات وفواصل الأسطر الخام بيانات إدخال أيضًا، وقد تغيّر الترميز. إذا نسخت خاصية HTML أو سلسلة JSON بين علامتي اقتباس أو جسم طلب كاملًا، فحلّل الصيغة الخارجية منفصلة. لا تصبح فواصلها وقواعد هروبها تلقائيًا قواعد ترميز مئوي.

هروب غير سليم وUTF-8 غير صالح وناتج غير متوقع
الإدخال أو العَرَضالسببالخطوة التالية المفيدة
% أو %2هروب مئوي غير مكتملافحص القيمة المنسوخة كاملة
%GGخانات هروب غير سداسية عشريةافحص المُنتج الأصلي
%FFالبايت المرمّز غير صالح في UTF-8حدّد ترميز المحارف المتوقع أو النطاق الثنائي
تبقى a+b بعلامة جمع في نمط الجزءالجمع الحرفي ليس مسافة في ذلك النمطاستخدم قيمة النموذج فقط إذا توقعها المستقبِل
يحفظ الفك الكامل %2Fيحفظ decodeURI الفاصل المحجوزاستخدم فك الجزء للقيمة الفردية المناسبة

ECMAScript: encodeURIComponent وdecodeURIComponentECMAScript: encodeURI وdecodeURIRFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئوي

سبب ظهور %25 ومتى يكون فك ثانٍ غير مناسب

يُضيف ترميز علامة نسبة مرمّزة طبقة أخرى: ينتج عن ترميز الجزء %2F القيمة %252F. يعيد فك الجزء مرة واحدة لـ%252F القيمة %2F؛ وتعيد المرة الثانية /. تغيّر كل خطوة طبقة ترميز واحدة. لا يثبت وجود %25 وحده خطأ، فقد يحمل التطبيق عمدًا نصًا مرمّزًا داخل قيمة أخرى.

حدّد الطبقة التي يتوقعها التطبيق بدل تكرار الفك حتى تظهر علامات الترقيم. قد يحوّل فك الجزء الثاني البيانات إلى شرطة مائلة أو فاصل بنيوي. وقد يحفظ فك الرابط الكامل تلك الفواصل المرمّزة عمدًا، لذا لا يعني مثال الجزء أن كل نمط يزيل كل الهروب بالتكرار. لا تعرف الأداة قواعد توجيه التطبيق أو تفويضه.

RFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئويECMAScript: encodeURIComponent وdecodeURIComponentECMAScript: encodeURI وdecodeURI

سلاسل الاستعلام وأجزاء المسار والاستخدام الآمن في التطبيقات

افصل اسم معامل الاستعلام وبنية الاستعلام عن قيمته. قد تساعد API لبناء الروابط مثل URL وURLSearchParams في تجميع عنوان فعلي وتسلسله. تحوّل هذه الأداة النص المقدّم فقط؛ ولا تتحقق من اسم مضيف أو تختصر رابطًا أو تتبع إعادة توجيه أو تحدد المخطط الذي ينبغي أن يسمح به التطبيق.

الترميز المئوي تمثيل قابل للعكس، وليس تشفيرًا أو تجزئة أو هروب HTML أو تفويضًا. لا يجعل ترميز مخطط خطير الرابط موثوقًا، ولا يجعل فك قيمة إدراجها كنص HTML أو شيفرة تنفيذية آمنًا. طبّق قواعد التحقق والهروب لسياق الوجهة، وأبق الأسرار الحقيقية خارج روابط الأمثلة المشتركة.

WHATWG URL: تحليل URL والمضيفات وURLSearchParamsWHATWG URL: تحليل النماذج المرمّزة للرابط وتسلسلهاRFC 3986: صياغة URI والمحارف غير المحجوزة والترميز المئوي

حدود الإدخال وزيادة الناتج والملفات النصية المحلية

حد الإدخال 1,000,000 وحدة ترميز UTF-16، وليس مليون بايت UTF-8 أو مليون وحدة كتابية ظاهرة. قد يزيد الهروب حجم الناتج: ينتج عن مليون مسافة ASCII ثلاثة ملايين محرف في نمط الجزء. يظل النسخ والتنزيل متاحين للناتج الأكبر من حد الإدخال، لكن «استخدم النتيجة كإدخال» لا يحمّل تلك النتيجة الكبيرة. تظل ذاكرة المتصفح المتاحة حدًا عمليًا.

يقرأ فتح الملف المحلي نص UTF-8 عبر File.text(). تُرفض الملفات البالغ حجمها 4,000,000 بايت أو أكثر؛ ويُرفض النص المحمّل إذا تجاوز 1,000,000 وحدة UTF-16. تزيل القراءة العادية BOM في بداية UTF-8 وتستبدل تسلسلات UTF-8 غير السليمة، لذا ليست ترميزًا ثنائيًا مطابقًا للبايتات أو فكًا لأي مجموعة محارف. امتداد الملف لا يثبت ترميزه.

W3C File API: قراءة Blob كنصWHATWG Encoding: UTF-8 وفك النصECMAScript: String isWellFormed

النسخ والتنزيل النصي والمسح والخصوصية

يحفظ «تنزيل» النتيجة كنص UTF-8 في toolmellow-result.txt، وليس طلبًا أو تقريرًا أو صفحة مفتوحة. يظل «انسخ النتيجة» و«تنزيل» متاحين عند نجاح تحويل فارغ. إذا تعذر الوصول إلى الحافظة، فحدد الناتج وانسخه يدويًا. لاختبار بسيط، رمّز نصًا معلومًا، وأعد استخدام النتيجة إذا كانت ضمن الحد، ثم فكّها بالنمط نفسه.

يعيد «مسح» ضبط الإدخال والنتيجة والأخطاء ومحتوى البحث والاستبدال وسجل المحرر، مع الإبقاء على نمط الترميز والتفاف الأسطر. يبقى محتوى العمل في ذاكرة الصفحة، وليس في سجل حساب. يؤدي التحديث أو الإغلاق إلى إسقاط حالة العمل؛ وتبقى الملفات المنزّلة على الجهاز. لا يضمن المسح إزالة كل الآثار القابلة للاستعادة من ذاكرة المتصفح أو نظام التشغيل.

يجري التحويل في عامل متصفح محلي، ولا يرسل نص URL المدخل أو محتوى الملف المحدد أو النتائج إلى خادم تحويل. يرسل تحميل الموقع بيانات الطلبات المعتادة إلى الاستضافة، ويستخدم Google Analytics لزيارات الصفحات بما فيها ملفات الارتباط ومعلومات المتصفح والجهاز. التحويل المحلي لا يعني إخفاء الهوية أو انعدام حركة الشبكة أو انعدام سجلات البنية التحتية؛ راجع صفحة الخصوصية.

تضمين أداة ترميز URL وفكّه مع رابط خلفي

اختر لغة الصفحة وافتح قسم التكامل أسفل مساحة العمل. انسخ مقتطف HTML المتاح أو نزّله إلى منطقة في الموقع تسمح بإطارات iframe والبرامج النصية الخارجية. يحتوي على إطار مساحة عمل ToolMellow وبرنامج ضبط الحجم ورابط خلفي ظاهر إلى صفحة الأداة باللغة المطابقة. احتفظ برابط الإسناد هذا.

عاين التضمين على شاشة ضيقة، وتحقق من أذونات الحافظة ودعم الموارد الخارجية في منصتك. للتضمين الأنماط الثلاثة ونطاق النص والحدود نفسها؛ وليس API لخادم تحويل أو خدمة لجلب URL. يستخدم الرابط nofollow وnoopener، لذلك لا يضمن وجوده ترتيبًا أعلى في البحث.

أسئلة شائعة

كيف أرمّز نصًا لاستخدامه في URL؟

اختر نمط الوجهة: جزء من رابط لقيمة أو جزء مسار، وقيمة نموذج لتسلسل نموذج، والرابط كاملًا لعنوان مجمّع ينبغي حفظ فواصله. الصق النص واضغط «ترميز». لا تفتح الأداة العنوان.

كيف أفك ترميز قيمة مرمّزة في URL؟

اختر النمط المطابق واضغط «فك الترميز». يفك نمطا الجزء والنموذج UTF-8 المرمّز مئويًا بصرامة؛ ويحوّل النموذج أيضًا الجمع الحرفي إلى مسافة أولًا. يحفظ النمط الكامل هروب مجموعته المحجوزة الخاصة. لا يحلل الاستعلام إلى أزواج.

متى تعني علامة الجمع مسافة في URL؟

في هذه الأداة، يستبدل فك قيمة النموذج وحده الجمع الحرفي بمسافة. يحفظ فك الجزء والرابط الكامل الجمع الحرفي. لتحليل application/x-www-form-urlencoded قاعدة جمع خاصة، وليست عامة لكل جزء URL.

ما الفرق بين %20 و+؟

%20 تسلسل الهروب المئوي لبايت المسافة في ASCII. يستخدم تسلسل النموذج الجمع للمسافة و%2B للجمع الحرفي. تحدد الصيغة المستقبِلة هل ينبغي تفسير الجمع كمسافة.

لماذا يحفظ فك الرابط الكامل %2F؟

يستخدم النمط الكامل decodeURI ويحفظ هروب مجموعته ;/?:@&=+$,#، بما فيها الشرطة المائلة والعطف وعلامة الجزء المرجعي. ليست هذه كل محارف RFC 3986 المحجوزة: تُفك هروب الأقواس المربعة إلى أقواس مربعة. يفك نمط الجزء هروب تلك الفواصل أيضًا. اختر بحسب جزء العنوان المقصود، ولا تستخدم النمط الكامل لتطبيع مضيف IPv6.

كيف تختلف الأداة عن encodeURIComponent؟

يضيف نمط الجزء في ToolMellow هروبًا لعلامة التعجب والفاصلة العليا والأقواس والنجمة. تبقى فقط الحروف والأرقام و-._~ حرفية. للنموذج والرابط الكامل قواعد تسلسل مختلفة؛ وليست أسماء بديلة قابلة للتبادل.

لماذا يفشل فك ترميز URL؟

تسبب الهروب غير المكتملة أو غير السداسية عشرية وUTF-8 المرمّز مئويًا غير الصالح خطأ. افحص القيمة الأصلية والنمط المتوقع والصيغة الخارجية. لا تصلح الأداة الهروب غير السليم ولا تختار ترميز محارف آخر بصمت.

هل تتحقق الأداة دائمًا من Unicode عند الفك؟

لا. يفحص فك الرابط الكامل الإدخال الخام للتأكد من سلامة Unicode؛ ولا يفحص فك الجزء والنموذج الوحدات الحرفية غير المرمّزة بذلك الفحص المنفصل. تُفك تسلسلات البايتات المرمّزة مئويًا كـUTF-8 بصرامة. نجاح الفك ليس تحققًا كاملًا من URL.

لماذا يحتوي الرابط على %25؟

تمثّل %25 علامة نسبة مئوية. قد تظهر عند إعادة ترميز نص مرمّز، مثل تحول %2F إلى %252F في نمط الجزء. حدّد الطبقة المتوقعة؛ فقد يحوّل الفك المتكرر البيانات إلى علامات بنيوية.

هل يمكن لصق سلسلة استعلام كاملة في قيمة النموذج؟

تعاملها الأداة كقيمة واحدة، وليس سلسلة أزواج معاملات. يهّرب الترميز الفواصل داخل القيمة؛ ولا يستخرج الفك الأسماء والقيم. استخدم محلل URL أو استعلام مناسبًا للتعامل مع بنيته الكاملة.

هل يمكن ترميز ملف محلي أو إعادة استخدام ناتج كبير؟

يقرأ عنصر الملف نص UTF-8 من ملف أصغر من 4,000,000 بايت، ويسمح حتى 1,000,000 وحدة إدخال UTF-16. ليس ترميزًا لملف ثنائي خام. يمكن أن يكون الناتج أكبر ويظل قابلًا للنسخ والتنزيل، لكن لا يعاد استخدام الناتج المتجاوز للحد كإدخال.

هل ترميز URL تشفير؟

لا. الترميز المئوي تمثيل قابل للعكس، ولا يضيف سرية أو تفويضًا. وليس تجزئة أو هروب HTML أو ضمانًا لسلامة URL. طبّق قواعد التحقق والهروب لسياق الوجهة.

هل يمكن تضمين أداة ترميز URL وفكّه في موقعي؟

استخدم مقتطف HTML باللغة المطلوبة أسفل مساحة العمل، واحتفظ برابط ToolMellow الخلفي الظاهر، وتحقق من دعم iframe والبرامج النصية. للتضمين الأنماط الثلاثة وحدود النص المحلي نفسها؛ وليس API لخادم تحويل أو خدمة جلب URL.

المصادر وقراءات إضافية

جرّب بنفسك.