في هذا الدرس 4تصفّح المواضيع
HTTP URL Encoding
ترميز URL لـ HTTP
HTTP URL Encoding ترميز URL لـ HTTP
عنوان URL، أو مُحدد موقع الموارد الموحد Uniform Resource Locator، هو الرابط الذي يُستخدم للوصول إلى أي مورد على الإنترنت، سواء كان صفحة ويب، صورة، أو ملفاً. يلعب الترميز دورًا حيويًا في تسهيل قراءة هذه العناوين وفهمها من قبل أنظمة الحاسب، مما يضمن توجيه الطلبات إلى الوجهة الصحيحة دون التعرض لأخطاء ناتجة عن الأحرف الخاصة أو المسافات. في هذا السياق، يُعرف ترميز URL لـ HTTP بترميز النسبة المئوية، وهو عملية تحويل الأحرف في عنوان URL إلى تنسيق آمن ومقبول لنقلها عبر الإنترنت لضمان معالجة كل جزء من العنوان بشكل صحيح، خاصة الأحرف التي لها معانٍ خاصة في URLs.
أثناء عملية الترميز، تُستبدل بعض الأحرف المحجوزة أو غير الآمنة بسلسلة رمزية باستخدام النسبة المئوية. يتم استخدام رمز النسبة المئوية "%" يليه رقمين بالأرقام السداسية عشرية [hexadecimal]، ليمثل قيمة بايت واحد. تغطي ASCII بعض الأحرف فقط؛ النص العربي وغيره يرمز عادةً إلى بايتات UTF-8، وقد يحتاج الحرف الواحد إلى عدة مجموعات %HH. على سبيل المثال، تتحول المسافة [Space] إلى "%20"، بينما تُحوّل علامة التعجب "!" إلى "%21".
الهدف من ترميز عناوين URL هو التعامل مع الأحرف مثل المسافات والرموز الخاصة التي لها معانٍ محددة في سياق عناوين URL. باستخدام URL Encoding، يمكن ترميز هذه الأحرف بشكل يضمن بقاء معناها صحيحًا دون التباس، مما يضمن تفسير كل جزء من URL بشكل دقيق عند استلامه ومعالجته من قبل الخادم.
أثناء عملية الترميز، تُستبدل بعض الأحرف المحجوزة أو غير الآمنة بسلسلة رمزية باستخدام النسبة المئوية. يتم استخدام رمز النسبة المئوية "%" يليه رقمين بالأرقام السداسية عشرية [hexadecimal]، ليمثل قيمة بايت واحد. تغطي ASCII بعض الأحرف فقط؛ النص العربي وغيره يرمز عادةً إلى بايتات UTF-8، وقد يحتاج الحرف الواحد إلى عدة مجموعات %HH. على سبيل المثال، تتحول المسافة [Space] إلى "%20"، بينما تُحوّل علامة التعجب "!" إلى "%21".
الهدف من ترميز عناوين URL هو التعامل مع الأحرف مثل المسافات والرموز الخاصة التي لها معانٍ محددة في سياق عناوين URL. باستخدام URL Encoding، يمكن ترميز هذه الأحرف بشكل يضمن بقاء معناها صحيحًا دون التباس، مما يضمن تفسير كل جزء من URL بشكل دقيق عند استلامه ومعالجته من قبل الخادم.
هذا ترميز وليس تشفيرًا أو وسيلة لإخفاء البيانات. مثال: الحرف أ بترميز UTF-8 يصبح %D8%A3. يتحدد ما يحتاج إلى ترميز بحسب مكون URL؛ لا ترمّز العنوان كله عشوائيًا.
?Why do we need URL encoding
لماذا نحتاج لترميز URL؟
?Why do we need URL encoding لماذا نحتاج لترميز URL؟
نحتاج لترميز URL لأسباب متعددة تتعلق بكيفية معالجة ونقل البيانات بشكل آمن وصحيح عبر الإنترنت. إليك بعض الأسباب الرئيسية:
- تجنب الأخطاء في معالجة البيانات: تحتوي عناوين URL أحيانًا على أحرف لها وظائف خاصة مثل [? و &] يتم استخدامها لتحديد أقسام معينة من العنوان. إذا لم تُرمّز الأحرف الأخرى التي تشبه هذه الرموز، قد يؤدي ذلك إلى تفسيرات خاطئة.
- حماية الأحرف غير المسموح بها: المسافة لا تكتب حرفيًا في URI. أما # فيفصل fragment، و% يبدأ مجموعة ترميز؛ إذا أريد الحرف نفسه كبيانات داخل المكون، يرمّز إلى %23 أو %25 بدل استخدامه كفاصل. ترميز URL يضمن تحويل هذه الأحرف إلى تنسيق مقبول وهو ترميز النسبة المئوية.
- ضمان سلامة البيانات أثناء النقل: عند نقل البيانات عبر الإنترنت يمكن أن تتسبب بعض الأحرف الخاصة في إرباك الأنظمة أو إساءة تفسير البيانات. ترميز URL يساعد في الحفاظ على سلامة البيانات ويحميها من الفقدان أو التشويه.
- التكيف مع مختلف أنظمة التشغيل والمتصفحات: ليس كل الأنظمة والمتصفحات تتعامل مع عناوين URL بالطريقة ذاتها. يضمن ترميز URL أن تتمكن جميع الأجهزة والبرامج من فهم العنوان بنفس الطريقة، بغض النظر عن القواعد المحلية للنظام أو المتصفح.
- دعم اللغات الدولية: يستخدم ترميز URL للسماح بإدراج الأحرف الخاصة بلغات غير الإنجليزية، مما يوسع إمكانية الوصول إلى الموارد على الإنترنت لمستخدمي جميع اللغات.
ASCII URL Encoding Table for Codes 32–127
جدول ترميز ASCII في URL للقيم32–127
ASCII URL Encoding Table for Codes 32–127 جدول ترميز ASCII في URL للقيم32–127
لماذا يبدأ الجدول بالرقم 32 في ترميز ASCII لعناوين URL؟
الأرقام الأقل من 32 في [ASCII] تُعتبر رموز تحكم، مثل إشارات بداية النص ونهاية النص، وهي ليست أحرفًا قابلة للطباعة. عند الحاجة لاستخدام هذه الرموز في سياقات مثل [URL]، يجب ترميزها لضمان عدم تفسيرها بشكل خاطئ.
لذلك، يتم استخدام صيغة النسبة المئوية %xx، حيث يمثل "%" استخدام الترميز، و "xx" هو الاستبدال السداسي عشري للقيمة [ASCII]. على سبيل المثال، رمز [ASCII] للعدد 10، الذي يشير إلى سطر جديد، يتم ترميزه في [URL] كـ %0A لأن 0A هو التمثيل السداسي عشري للعدد 10. هذا يصف البايتات فقط؛ قد يرفض التطبيق رموز التحكم، ولا يجعل ترميزها إدخالًا آمنًا أو مقبولًا. يجب التحقق من البيانات بعد تفسيرها.
الأرقام الأقل من 32 في [ASCII] تُعتبر رموز تحكم، مثل إشارات بداية النص ونهاية النص، وهي ليست أحرفًا قابلة للطباعة. عند الحاجة لاستخدام هذه الرموز في سياقات مثل [URL]، يجب ترميزها لضمان عدم تفسيرها بشكل خاطئ.
لذلك، يتم استخدام صيغة النسبة المئوية %xx، حيث يمثل "%" استخدام الترميز، و "xx" هو الاستبدال السداسي عشري للقيمة [ASCII]. على سبيل المثال، رمز [ASCII] للعدد 10، الذي يشير إلى سطر جديد، يتم ترميزه في [URL] كـ %0A لأن 0A هو التمثيل السداسي عشري للعدد 10. هذا يصف البايتات فقط؛ قد يرفض التطبيق رموز التحكم، ولا يجعل ترميزها إدخالًا آمنًا أو مقبولًا. يجب التحقق من البيانات بعد تفسيرها.
| الحرف | الرمز ASCII | ترميز URL |
| space | 32 | %20 أو + |
| ! | 33 | %21 |
| " | 34 | %22 |
| # | 35 | %23 |
| $ | 36 | %24 |
| % | 37 | %25 |
| & | 38 | %26 |
| ' | 39 | %27 |
| ( | 40 | %28 |
| ) | 41 | %29 |
| * | 42 | %2A |
| + | 43 | %2B |
| , | 44 | %2C |
| - | 45 | - |
| . | 46 | . |
| / | 47 | %2F |
| 0 | 48 | 0 |
| 1 | 49 | 1 |
| 2 | 50 | 2 |
| 3 | 51 | 3 |
| 4 | 52 | 4 |
| 5 | 53 | 5 |
| 6 | 54 | 6 |
| 7 | 55 | 7 |
| 8 | 56 | 8 |
| 9 | 57 | 9 |
| : | 58 | %3A |
| ; | 59 | %3B |
| < | 60 | %3C |
| = | 61 | %3D |
| > | 62 | %3E |
| ? | 63 | %3F |
| @ | 64 | %40 |
| A | 65 | A |
| B | 66 | B |
| C | 67 | C |
| D | 68 | D |
| E | 69 | E |
| F | 70 | F |
| G | 71 | G |
| H | 72 | H |
| I | 73 | I |
| J | 74 | J |
| K | 75 | K |
| L | 76 | L |
| M | 77 | M |
| N | 78 | N |
| O | 79 | O |
| P | 80 | P |
| Q | 81 | Q |
| R | 82 | R |
| S | 83 | S |
| T | 84 | T |
| U | 85 | U |
| V | 86 | V |
| W | 87 | W |
| X | 88 | X |
| Y | 89 | Y |
| Z | 90 | Z |
| [ | 91 | %5B |
| \ | 92 | %5C |
| ] | 93 | %5D |
| ^ | 94 | %5E |
| _ | 95 | _ |
| ` | 96 | %60 |
| a | 97 | a |
| b | 98 | b |
| c | 99 | c |
| d | 100 | d |
| e | 101 | e |
| f | 102 | f |
| g | 103 | g |
| h | 104 | h |
| i | 105 | i |
| j | 106 | j |
| k | 107 | k |
| l | 108 | l |
| m | 109 | m |
| n | 110 | n |
| o | 111 | o |
| p | 112 | p |
| q | 113 | q |
| r | 114 | r |
| s | 115 | s |
| t | 116 | t |
| u | 117 | u |
| v | 118 | v |
| w | 119 | w |
| x | 120 | x |
| y | 121 | y |
| z | 122 | z |
| { | 123 | %7B |
| | | 124 | %7C |
| } | 125 | %7D |
| ~ | 126 | %7E |
| DEL | 127 | %7F |
الجدول يعرض المقابل عند الحاجة إلى ترميز الحرف كبيانات. الأحرف غير المحجوزة تشمل الحروف والأرقام و- و. و_ و~ ولا تحتاج إلى ترميز. + يعني مسافة في application/x-www-form-urlencoded، ومنها ترميز نماذج الاستعلام، لكنه ليس بديلًا عامًا للمسافة داخل المسار. لترميز علامة الجمع نفسها في نموذج استخدم %2B.
Control Codes in ASCII for Numbers 0 to 31
رموز التحكم في ASCII للأرقام من 0 إلى 31
Control Codes in ASCII for Numbers 0 to 31 رموز التحكم في ASCII للأرقام من 0 إلى 31
هذه الرموز تُستخدم للتحكم في معالجة البيانات والتواصل بين الأجهزة والأنظمة المختلفة، وليس لها تمثيل مرئي كنص مطبوع.
| ASCII | الاختصار الشائع | الاسم الكامل للرمز | الوصف |
| 0 | NUL | Null Character | المحرف الصفري؛ قد ينهي سلسلة نصية في لغات مثل C، وليس رمز ETX لنهاية النص |
| 1 | SOH | Start of Heading | بداية العنوان |
| 2 | STX | Start of Text | بداية النص |
| 3 | ETX | End of Text | نهاية النص |
| 4 | EOT | End of Transmission | نهاية النقل |
| 5 | ENQ | Enquiry | استعلام |
| 6 | ACK | Acknowledge | تأكيد الاستلام |
| 7 | BEL | Bell | جرس |
| 8 | BS | Backspace | مسافة للخلف |
| 9 | HT | Horizontal Tab | تبويب أفقي |
| 10 | LF | Line Feed | تغذية الأسطر |
| 11 | VT | Vertical Tab | تبويب عمودي |
| 12 | FF | Form Feed | تغذية النماذج |
| 13 | CR | Carriage Return | العودة إلى بداية السطر |
| 14 | SO | Shift Out | تبديل للخارج |
| 15 | SI | Shift In | تبديل للداخل |
| 16 | DLE | Data Link Escape | هروب الرابط البياني |
| 17 | DC1 | Device Control 1 | التحكم في الجهاز 1 |
| 18 | DC2 | Device Control 2 | التحكم في الجهاز 2 |
| 19 | DC3 | Device Control 3 | التحكم في الجهاز 3 |
| 20 | DC4 | Device Control 4 | التحكم في الجهاز 4 |
| 21 | NAK | Negative Acknowledge | عدم تأكيد الاستلام |
| 22 | SYN | Synchronous Idle | خمول تزامني |
| 23 | ETB | End of Transmission Block | نهاية كتلة النقل |
| 24 | CAN | Cancel | إلغاء |
| 25 | EM | End of Medium | نهاية الوسيط |
| 26 | SUB | Substitute | استبدال |
| 27 | ESC | Escape | هروب |
| 28 | FS | File Separator | فاصل ملفات |
| 29 | GS | Group Separator | فاصل مجموعات |
| 30 | RS | Record Separator | فاصل تسجيلات |
| 31 | US | Unit Separator | فاصل وحدات |
رحلتك في الدرس
—سجّل الدخول لحفظ تقدمك
تابع إنجاز المواضيع والمصطلحات والمهام، وكمّل من آخر خطوة على أي جهاز.