Avatar ·

كيفية ترميز URL بشكل صحيح في JavaScript؟ encodeURI مقابل encodeURIComponent

مرحباً بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة أثناء العمل مع URL. أحتاج إلى إرسال طلب إلى الخادم مع معاملات تحتوي على رموز خاصة وحروف سيريلية. على سبيل المثال، لدي سلسلة بحث: "قهوة & شاي / وصفات؟". حاولت استخدام `encodeURI()`، لكن لاحظت أن بعض الرموز لا يتم ترميزها. ثم وجدت `encodeURIComponent()`، لكن الآن لا أفهم أي طريقة يجب استخدامها ومتى. إليك مثال على الكود الخاص بي الذي لا يعمل كما هو متوقع: ```javascript const baseUrl = "https://api.example.com/search"; const query = "قهوة & شاي / وصفات؟"; const fullUrl = baseUrl + "?q=" + encodeURI(query); console.log(fullUrl); // النتيجة: https://api.example.com/search?q=%D0%BA%D0%BE%D1%84%D0%B5%20&%20%D1%87%D0%B0%D0%B9%20/%20%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%D1%8B? // يُلاحظ أن & و ? بقيت غير مشفرة ``` حاولت استخدام `encodeURIComponent`: ```javascript const encodedQuery = encodeURIComponent(query); console.log(encodedQu