تهريب النصوص وفك تهريبها

اختر نوع السلسلة التي سيُستخدم فيها نصك، فتُكتب الهروبات أو تُقرأ وفق قواعدها. تذكر كل صيغة المواصفة التي تتبعها. لا يخرج شيء مما تلصقه من متصفحك.

مجانية تعمل داخل متصفحك آخر مراجعة: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة

النص المراد تهريبه، أو النص المهرّب المراد فك تهريبه. تبقى المسافات وفواصل الأسطر كما هي.

الإجراء

نوع السلسلة التي سيُستخدم فيها النص. ولكل صيغة هروباتها الخاصة.

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

النتيجة

النتيجة
الحروف المهرّبة

تعمل هذه الأداة داخل متصفحك. ما تكتبه فيها لا يُرسل إلينا.

طريقة الاستخدام

  1. الصق النص في النص، واختر تهريب أو فك التهريب في الإجراء.
  2. اختر نوع السلسلة في الصيغة، مثل سلسلة JSON أو نص SQL حرفي.
  3. في الصيغ التي لها علامات اقتباس، أبقِ أضف علامات الاقتباس مفعّلة لتحصل على النص مع علامات اقتباسه، أو ألغِ تفعيلها لتحصل على المحتوى وحده.
  4. اقرأ النتيجة، وجدول الحروف المهرّبة حين تهرّب النص.

معنى التهريب

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

  • تستخدم JSON وJavaScript الشرطة المائلة المعكوسة، فيُكتب فاصل السطر هكذا \n.
  • تستخدم HTML وXML علامة العطف والاسم والفاصلة المنقوطة، فتُكتب علامة العطف هكذا &.
  • يضاعف CSV وSQL الحرف الذي ينهي الحقل أو السلسلة، فتُكتب علامة الاقتباس المفردة في SQL مرتين.

قواعد كل صيغة

  • سلسلة JSON: RFC 8259، القسم 7. تُهرَّب علامة الاقتباس والشرطة المائلة المعكوسة وحروف التحكم، ويُقرأ هروب \u مع أربعة أرقام سداسية عشرية.
  • سلسلة JavaScript: سلاسل ECMA-262 الحرفية. في السلسلة المقتبسة بعلامة مزدوجة يحتاج الحرف المزدوج وحده إلى هروب، وتُرفض الهروبات الثمانية القديمة.
  • قيمة سمة HTML: الحروف الخمسة & < > " ' تُكتب بمراجع. والاسم الذي لا تعرفه الصفحة، مثل &eacute;، يبقى كما هو.
  • نص XML: الحروف الخمسة نفسها، مع &apos; للفاصلة العليا. ولا توجد في XML 1.0 طريقة لكتابة حرف تحكم، لذلك تُرفض هذه الحروف.
  • حقل CSV: RFC 4180. يُحاط الحقل الذي فيه فاصلة أو علامة اقتباس أو فاصل سطر بعلامات اقتباس مزدوجة، وتُضاعف كل علامة اقتباس داخله.
  • نص SQL حرفي: دليل PostgreSQL. تُضاعف علامة الاقتباس المفردة. والشرطة المائلة المعكوسة ليست خاصة في SQL القياسي.
  • التعبير النمطي: تُكتب شرطة مائلة معكوسة أمام كل حرف صيغة، كما تعدّدها ECMA-262. ويبقى عند فك التهريب هروب مثل \d، لأنه يمثل فئة.
  • سلسلة C# أو Java: الهروبات التي تقرؤها اللغتان. تُكتب فواصل الأسطر هكذا \n، وحروف التحكم الأخرى بهروبات \u.
  • نص shell بين علامات الاقتباس المفردة: POSIX. لا شيء خاص داخل علامات الاقتباس المفردة، لذلك تُكتب علامة الاقتباس هكذا '\'' (تُنهي الاقتباس، ثم تهرّبه، ثم تبدأه من جديد).

أخطاء سهلة الوقوع

  • تهريب النص مرتين يضاعف شرطاته المائلة، فتظهر النتيجة \\n حيث أعطى التهريب الأول \n.
  • سلسلة JSON توضع داخل ملف JavaScript تحتاج إلى هروباتها في الملف، وقد تحتاج سلسلة SQL داخل تطبيق هروبات لغة التطبيق أيضاً.
  • نصف رمز تعبيري لا تكتبه أي من هذه الصيغ، لذلك ترفضه الصفحة. اكتب الحرف مرة أخرى.

مثال محلول: سلسلة JSON فيها علامات اقتباس وفاصل سطر وشرطة مائلة معكوسة

يحوي النص علامتي اقتباس حول كلمة مرحباً، وفاصل سطر واحداً، وشرطة مائلة معكوسة واحدة في المسار C:\temp. وعند تهريبه كسلسلة JSON مع علامات الاقتباس يصبح هكذا: "قال \"مرحباً\" & غادر.\nالمسار: C:\\temp". ويعد الجدول الحروف التي كُتبت بطريقة أخرى.

الحرف يُكتب بـ المرات
" \" 2
U+000A \n 1
\ \\ 1

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

هل يُرسل النص إلى خادم؟

لا. يعمل التهريب وفك التهريب في متصفحك، فيبقى النص الذي يحوي كلمة مرور أو رمزاً على جهازك.

لماذا يرفض فك التهريب \x41 في JSON؟

ليس في JSON هروب بالشكل \x. فيه \u متبوعة بأربعة أرقام سداسية عشرية، فيُكتب الحرف A هكذا \u0041. أما سلسلة JavaScript فتقبل \x41، ولهذا تُذكر الصيغتان منفصلتين.

لماذا تُترك علامات الاقتباس المفردة كما هي في سلسلة JavaScript؟

السلسلة المقتبسة بعلامة مزدوجة تحتاج إلى هروب علامتها المزدوجة فقط. ومع تفعيل خيار علامات الاقتباس يُلف الناتج بعلامات مزدوجة، فتكون علامة الاقتباس المفردة حرفاً عادياً فيها.

لماذا لا تُهرَّب الشرطة المائلة المعكوسة في SQL؟

لا يعامل SQL القياسي الشرطة المائلة المعكوسة كحرف خاص في ثابت نصي. لكن بعض قواعد البيانات، مثل MySQL افتراضياً، تعاملها هكذا، فتحقق من قواعد قاعدة بياناتك قبل أن تكتب شرطة مائلة معكوسة في نص SQL.

ماذا يغيّر خيار أضف علامات الاقتباس؟

حين يكون مفعّلاً يُلف النص المهرّب بعلامات اقتباس الصيغة، مثل علامات مزدوجة لـ JSON أو مفردة لـ SQL. ألغِ تفعيله لتحصل على المحتوى وحده، مثلاً لتضعه داخل سلسلة مقتبسة أصلاً.

لماذا تحوي نتيجة CSV علامات اقتباس، والنص لا يحوي علامة اقتباس؟

يشترط RFC 4180 أن يُحاط الحقل بعلامات اقتباس حين يحوي فاصلة أو علامة اقتباس أو فاصل سطر. والحقل العادي يُكتب كما هو، دون علامات اقتباس.

لماذا يُرفض حرف تحكم في XML؟

لا يسمح XML 1.0 بحروف مثل U+0001 إطلاقاً، ولا حتى بمرجع، لذلك لا تستطيع الصفحة كتابتها. احذفها من النص أولاً.

المصادر

آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.

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