دليل تشفير URL: Percent-Encoding وUTF-8
إجابة سريعة
encodeURIComponent يشفر جميع الأحرف الخاصة، encodeURI يترك :/?#[]@. %20 = مسافة، %E2%82%AC = €. استخدم أداة تشفير URL المجانية — دعم UTF-8 كامل في متصفحك.
مقدمة
تشفير URL (percent-encoding) يحول الأحرف غير الآمنة إلى %XX. الأحرف الآمنة هي A-Z وa-z و0-9 و- و_ و. و~. كل الأحرف الأخرى تشفر، خاصة المسافة (%20)، الأحرف غير ASCII (UTF-8 multi-byte)، والرموز الخاصة.
خطوة بخطوة
-
تحديد ما يحتاج إلى الترميز
يجب أن تكون الأحرف غير الموجودة في المجموعة غير المحجوزة (A-Z، a-z، 0-9، -، .، _، ~) مشفرة بنسبة مئوية. يتضمن ذلك المسافات وفواصل الاستعلام مثل = و& والشرطات المائلة وجميع الأحرف غير ASCII مثل الصينية أو العربية أو الرموز التعبيرية.
-
قم بتشفير URL أو سلسلة الاستعلام
الصق النص في أداة التشفير URL. يستخدم encodeURIComponent() لتشفير كل حرف محجوز. تظهر النتيجة على الفور في حقل الإخراج.
-
انسخ النتيجة المشفرة
انقر فوق الزر "نسخ" لنسخ السلسلة المشفرة بنسبة مئوية. يمكنك الآن تضمينه بأمان في معلمة استعلام URL أو طلب API أو إرسال النموذج.
-
فك تشفير URL
قم بلصق URL أو سلسلة استعلام مشفرة في أداة فك التشفير URL. ويستخدم decodeURIComponent() لاستعادة الأحرف الأصلية. تحقق من أن الإخراج الذي تم فك تشفيره يتوافق مع توقعاتك.
-
التحقق من حالات الحافة
تأكد من فك تشفير المسافات بشكل صحيح (%20 مقابل +)، ومن فك تشفير تسلسلات UTF-8 متعددة البايت إلى الحرف الصحيح، ومن أن السلاسل المشفرة بالفعل ليست مزدوجة التشفير.
أمثلة
تشفير النص بمسافة
مدخل: Hello World
الإخراج: Hello%20World
ترميز فاصل المسار
مدخل: a/b
الإخراج: a%2Fb
ترميز الأحرف الصينية (UTF-8)
مدخل: 你好
الإخراج: %E4%BD%A0%E5%A5%BD
فك ترميز معلمة الاستعلام المشفرة
مدخل: key%3Dvalue%26foo%3Dbar
الإخراج: key=value&foo=bar
المشاكل الشائعة
- التشفير المزدوج: يؤدي تشفير سلسلة مشفرة بالفعل إلى تحويل %20 إلى %2520. تحقق دائمًا مما إذا كان الإدخال مشفرًا بالفعل قبل إعادة التشفير.
- الخلط بين encodeURI وencodeURIComponent: يحتفظ encodeURI بالأحرف المحجوزة مثل / و ? و سليمة لـ URLs الكامل، بينما يقوم encodeURIComponent بتشفير كل شيء لقيم معلمات الاستعلام.
- معالجة المساحة: %20 هو النموذج المرمز بنسبة مئوية؛ + صالح فقط في بيانات النص application/x-www-form-urlencoded، وليس في المسار URL أو سلسلة الاستعلام لكل RFC 3986.
- الترميزات القديمة غير UTF-8: يتم تشفير المتصفحات الحديثة كـ UTF-8، لكن الأنظمة القديمة قد تستخدم GBK أو Latin-1، مما يتسبب في حدوث mojibake عند فك تشفيره على الجانب الآخر.
نصائح
- استخدم encodeURIComponent() لقيم معلمات الاستعلام الفردية، وencodeURI() لكامل URLs التي تم تشكيلها بشكل جيد بالفعل.
- عند إنشاء سلاسل استعلام، قم بتشفير القيمة ولكن ليس الفواصل = أو & — قم بتشفير كل قيمة بشكل منفصل ثم ضمها بـ &.
- استخدم أدوات التشفير ووحدة فك التشفير URL لتصحيح أخطاء استدعاءات API التي تُرجع 400 خطأ بسبب سلاسل استعلام غير صحيحة.
- قم دائمًا بفك التشفير على جانب الخادم باستخدام نفس ترميز الأحرف (UTF-8) لتجنب mojibake.