جدول شامل لأحرف URL المُرمَّزة (ASCII + Unicode)
جدول مرجعي شامل لأحرف URL المُرمَّزة. يغطي جميع أحرف ASCII القابلة للطباعة (32-126)، وأحرف Unicode الشائعة، وما يقابلها من ترميز النسبة المئوية (percent-encoding) كما هو مُعرَّف في RFC 3986.
أحرف التحكم والأحرف الخاصة في ASCII
أحرف ASCII في النطاق 0-31 والحرف 127 هي أحرف تحكم. هذه الأحرف غير قابلة للطباعة ويجب دائمًا ترميزها بترميز النسبة المئوية في عناوين URL. أكثر أحرف التحكم شيوعًا في سياقات URL هي المسافة (ASCII 32)، وعلامة الجدولة الأفقية (ASCII 9)، وأحرف السطر الجديد (ASCII 10 و13).
وفقًا لـ RFC 3986، فإن أي بايت (octet) ليس حرفًا غير محجوز، ولا حرفًا محجوزًا مُستخدَمًا لغرضه المحجوز، ولا ثلاثية مُرمَّزة بترميز النسبة المئوية، يجب ترميزه بترميز النسبة المئوية. من الناحية العملية، يعني هذا أن معظم الأحرف غير الأبجدية الرقمية ينبغي ترميزها داخل مكونات URI.
| الحرف | رمز ASCII | ترميز URL | الوصف |
|---|---|---|---|
| (tab) | 9 | %09 |
جدولة أفقية |
| (LF) | 10 | %0A |
تغذية سطر |
| (CR) | 13 | %0D |
إرجاع المؤشر |
| (space) | 32 | %20 |
مسافة |
أحرف ASCII القابلة للطباعة
فيما يلي مرجع شامل لجميع أحرف ASCII القابلة للطباعة (الرموز 32-126) وأشكالها المُرمَّزة في URL. الأحرف المُصنَّفة بأنها "غير محجوزة" في RFC 3986 لا تتطلب ترميزًا. أما الأحرف المحجوزة فيجب ترميزها عند استخدامها خارج غرضها المحجوز.
| الحرف | ASCII | Hex | ترميز URL | النوع |
|---|---|---|---|---|
| (space) | 32 | 20 | %20 |
خاص |
| ! | 33 | 21 | %21 |
محجوز |
| " | 34 | 22 | %22 |
غير آمن |
| # | 35 | 23 | %23 |
محجوز |
| $ | 36 | 24 | %24 |
محجوز |
| % | 37 | 25 | %25 |
خاص |
| & | 38 | 26 | %26 |
محجوز |
| ' | 39 | 27 | %27 |
محجوز |
| ( | 40 | 28 | %28 |
محجوز |
| ) | 41 | 29 | %29 |
محجوز |
| * | 42 | 2A | %2A |
محجوز |
| + | 43 | 2B | %2B |
محجوز |
| , | 44 | 2C | %2C |
محجوز |
| - | 45 | 2D | %2D |
غير محجوز |
| . | 46 | 2E | %2E |
غير محجوز |
| / | 47 | 2F | %2F |
محجوز |
| 0-9 | 48-57 | 30-39 | غير مطلوب | غير محجوز |
| : | 58 | 3A | %3A |
محجوز |
| ; | 59 | 3B | %3B |
محجوز |
| < | 60 | 3C | %3C |
غير آمن |
| = | 61 | 3D | %3D |
محجوز |
| > | 62 | 3E | %3E |
غير آمن |
| ? | 63 | 3F | %3F |
محجوز |
| @ | 64 | 40 | %40 |
محجوز |
| A-Z | 65-90 | 41-5A | غير مطلوب | غير محجوز |
| [ | 91 | 5B | %5B |
محجوز |
| \ | 92 | 5C | %5C |
غير آمن |
| ] | 93 | 5D | %5D |
محجوز |
| ^ | 94 | 5E | %5E |
غير آمن |
| _ | 95 | 5F | %5F |
غير محجوز |
| ` | 96 | 60 | %60 |
غير آمن |
| a-z | 97-122 | 61-7A | غير مطلوب | غير محجوز |
| { | 123 | 7B | %7B |
غير آمن |
| | | 124 | 7C | %7C |
غير آمن |
| } | 125 | 7D | %7D |
غير آمن |
| ~ | 126 | 7E | %7E |
غير محجوز |
ترميزات Unicode الشائعة
تُرمَّز أحرف Unicode أولًا إلى تسلسل البايتات الخاص بها بترميز UTF-8، ثم يُرمَّز كل بايت على حدة بترميز النسبة المئوية. تُنتج الأحرف متعددة البايتات عدة ثلاثيات مُرمَّزة بترميز النسبة المئوية.
| الحرف | الوصف | بايتات UTF-8 | ترميز URL |
|---|---|---|---|
| a مع علامتين فوقيتين | الحرف اللاتيني الصغير A مع علامتين فوقيتين (Diaeresis) | C3 A4 | %C3%A4 |
| n مع تلدة | الحرف اللاتيني الصغير N مع تلدة (Tilde) | C3 B1 | %C3%B1 |
| e مع علامة حادة | الحرف اللاتيني الصغير E مع علامة حادة (Acute) | C3 A9 | %C3%A9 |
| u مع علامتين فوقيتين | الحرف اللاتيني الصغير U مع علامتين فوقيتين (Diaeresis) | C3 BC | %C3%BC |
| علامة اليورو | علامة اليورو | E2 82 AC | %E2%82%AC |
| علامة الجنيه | علامة الجنيه الإسترليني | C2 A3 | %C2%A3 |
| علامة الين | علامة الين | C2 A5 | %C2%A5 |
| الحرف الصيني zhong | حرف صيني موحَّد (وسط) | E4 B8 AD | %E4%B8%AD |
| الحرف السيريلي Ya | الحرف السيريلي الكبير Ya | D0 AF | %D0%AF |
| الحرف العربي باء | الحرف العربي باء | D8 A8 | %D8%A8 |
كيف تُرمَّز الأحرف متعددة البايتات
يستخدم UTF-8 نظام ترميز متغير الطول. تستخدم الأحرف في نطاق ASCII (0-127) بايتًا واحدًا. أما الأحرف خارج هذا النطاق فتستخدم من اثنين إلى أربعة بايتات. وعند تطبيق ترميز النسبة المئوية، يصبح كل بايت من تمثيل UTF-8 ثلاثية %XX منفصلة.
الأحرف ذات البايتين (U+0080 إلى U+07FF): تشمل هذه معظم الأحرف اللاتينية الممتدة واليونانية والسيريلية والعربية. على سبيل المثال، الحرف الألماني sharp s (U+00DF) يُرمَّز إلى بايتات UTF-8 التالية C3 9F، والتي تصبح %C3%9F.
الأحرف ذات الثلاثة بايتات (U+0800 إلى U+FFFF): تشمل هذه أحرف CJK، ومعظم الرموز، والمستوى متعدد اللغات الأساسي (Basic Multilingual Plane). على سبيل المثال، الحرف الياباني هيراغانا (U+3042) يُرمَّز إلى بايتات UTF-8 التالية E3 81 82، والتي تصبح %E3%81%82.
الأحرف ذات الأربعة بايتات (U+10000 إلى U+10FFFF): تشمل هذه الرموز التعبيرية (emoji) والأحرف التكميلية. على سبيل المثال، رمز الوجه المبتسم التعبيري (U+1F600) يُرمَّز إلى بايتات UTF-8 التالية F0 9F 98 80، والتي تصبح %F0%9F%98%80.
// عرض توضيحي بلغة JavaScript للترميز متعدد البايتات
console.log(encodeURIComponent('u with umlaut'));
// بايتان: "%C3%BC"
console.log(encodeURIComponent('CJK char'));
// ثلاثة بايتات: "%E4%B8%AD"
console.log(encodeURIComponent('emoji'));
// أربعة بايتات: "%F0%9F%98%80"
// يمكنك التحقق عن طريق فك الترميز
console.log(decodeURIComponent('%C3%BC')); // u with umlaut
console.log(decodeURIComponent('%E4%B8%AD')); // CJK char