أسكي
أسكي (ASCII، (تُلفظ بالإنجليزية: /ˈæski/) ASS-kee)[1] هي مجموعة رموز ونظام ترميز مبني على الابجدية اللاتينية بالشكل الذي تستخدم به في الإنجليزية الحديثة ولغات غرب أوروبية أخرى. من أكثر الاستخدامات شيوعا للنصوص المكتوبة بالآسكي، استخدامها في أنظمة الحاسوب، وفي أجهزة الاتصالات وأنظمة التحكم التي تتعامل مع نصوص.
يعرّف نظام ASCII القياسي الرموز القابلة للطباعة الآتية، مرتبة حسب قيمة ASCII الخاصة بها.
تعريف معيار ASCII
يعتبر معيار ASCII من بين أنظمة تمثيل الرموز في الحاسوب، ويحدد علاقة تناظر بين قيمة رقمية لتتابع البتات وبين رمز أو رسم مستخدم في اللغة المكتوبة. إذ أن الحواسيب تتعامل فقط بإشارات كهربائية إما صفر أو واحد، أي البت (bit) في لغة البرمجة، ويمكن أن تمثل هذه البتات بتسلسلها أرقاما بالنظام الثنائي، ومجموعة من ثمانية بتات تمثل البايت (بالإنكليزية: Byte، بالفرنسية: Octet). ومن ثمة ظهرت الحاجة للتعبير عن الحروف والرموز بواسطة الأرقام الثنائية.
يُعَرِّفُ معيار ASCII مجموعة 128 رمزا أسندت لها أعداد ترتيبية من 0 إلى 127 وتم ترميزها بالنظام الثنائي من 0000000 إلى 1111111، وبالتالي تكفي 7 بتات للتعبير عنها. لذا يعد معيار ترميز 7 بتات. لكن بما أن الحواسيب تتعامل مع البايت (أي 8 بتات) فيقع التعبير عن رموز ASCII ببايت كامل يكون فيه البت الثامن غير مستعمل.
إختلفت طرق التعامل مع البت الثامن، فبينما فضلت جل الحواسيب إسناد صفر له (و هو الحل الشائع)، قامت بعض الأنظمة (مثل Prime Computer التي شغلت نظام تشغيل PRIMEROS) بإسناد واحد له، وفي أنظمة أخرى تم إستعماله بت تكافؤ للتأكد من خلو الاتصالات من الأخطاء، أو لأغراض تختلف حسب الهدف من الجهاز المستخدم. ولاحقا، ظهرت إستعمالات في معايير ترميز إمتدادية، للتعبير عن مزيد الرموز والحروف التي يعجز ASCII عن التعبير عنها.
يكتفي معيار ASCII بترجمة تسلسل من البتات إلى حرف أو رمز معين. بالتالي، لن يعبر عن شكل ظهور النصوص أو ترتيبها، وتلك الأمور تقع على عاتق وسائل أخرى مثل اللغات الترميزية (أي لغات توصيف النص) على غرار HTML وغيره.
قائمة الرموز
بعض هذه الرموز لا يمكن إظهارها، وهي الرموز عدد 0 إلى 31 وكذلك الرمز 127. تستعمل هذه الرموز أوامر تحكم لطرفيات الحاسوب، فعلى سبيل المثال يعد الرمز 127 أمر الحذف، بينما الرمز 7 أمر إشارة صوتية.
أما الرموز الأخرى فهي الرموز الطباعية، وتشمل الفراغ (الرمز 32) والأرقام العربية الغربية، والحروف اللاتينية الكبيرة والصغيرة دون شكلات، ومجموعة من علامات التنقيط والحساب المختارة. يذكر أن عددا من علامات التنقيط هذه تستعمل لأغراض برمجية شتى.
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
في الجدول أدناه توضيح لقيم رموز ترميز ASCII.[2]
قيمة الرمز | الرمز | معنى الرمز | |||
---|---|---|---|---|---|
10 | 8 | 16 | 2 | ||
0 | 0 | 00 | 0000000 | NUL | Null - عدم |
1 | 01 | 01 | 0000001 | SOH | Start of Heading - بداية الترويسة |
2 | 02 | 02 | 0000010 | STX | Start of Text - بداية النص |
3 | 03 | 03 | 0000011 | ETX | End of Text - نهاية النص |
4 | 04 | 04 | 0000100 | EOT | End of Transmission - نهاية الإرسال |
5 | 05 | 05 | 0000101 | ENQ | Enquiry - طلب |
6 | 06 | 06 | 0000110 | ACK | Acknowledge - تأكيد وصول |
7 | 07 | 07 | 0000111 | BEL | Bell - جرس منبه |
8 | 010 | 08 | 0001000 | BS | Backspace - زر العودة للخلف (الحذف) |
9 | 011 | 09 | 0001001 | HT | Horizontal Tab - مسافة الجدولة الأفقية |
10 | 012 | 0A | 0001010 | LF | Line Feed - تخطي سطر جديد |
11 | 013 | 0B | 0001011 | VT | Vertical Tab - مسافة الجودة العمودية |
12 | 014 | 0C | 0001100 | FF | Form Feed - تخطي صفحة جديدة |
13 | 015 | 0D | 0001101 | CR | Carriage Return - عودة سطر |
14 | 016 | 0E | 0001110 | SO | Shift Out - شفرة خاصة |
15 | 017 | 0F | 0001111 | SI | Shift In - شفرة قياسية |
16 | 020 | 10 | 0010000 | DLE | Data Link Escape - هروب أثناء البث |
17 | 021 | 11 | 0010001 | DC1 | Device Control 1 à 4 - تحكم جهاز تواصل |
18 | 022 | 12 | 0010010 | DC2 | |
19 | 023 | 13 | 0010011 | DC3 | |
20 | 024 | 14 | 0010100 | DC4 | |
21 | 025 | 15 | 0010101 | NAK | Negative Acknowledge - تأكيد عدم الوصول |
22 | 026 | 16 | 0010110 | SYN | Synchronous Idle - إنتظار متزامن |
23 | 027 | 17 | 0010111 | ETB | End of Transmission Block - نهاية كتلة الإرسال |
24 | 030 | 18 | 0011000 | CAN | Cancel - إلغاء |
25 | 031 | 19 | 0011001 | EM | End of Medium - نهاية الوسيط |
26 | 032 | 1A | 0011010 | SUB | Substitute - بديل |
27 | 033 | 1B | 0011011 | ESC | Escape - زر الهروب |
28 | 034 | 1C | 0011100 | FS | File Separator - فاصل ملف |
29 | 035 | 1D | 0011101 | GS | Group Separator - فاصل مجموعة |
30 | 036 | 1E | 0011110 | RS | Record Separator - فاصل تسجيل |
31 | 037 | 1F | 0011111 | US | Unit Separator - فاصل وحدة |
32 | 040 | 20 | 0100000 | SP | Space - مسافة |
33 | 041 | 21 | 0100001 | ! | علامة التعجب |
34 | 042 | 22 | 0100010 | " | علامة التنصيص |
35 | 043 | 23 | 0100011 | # | علامة الرقم |
36 | 044 | 24 | 0100100 | $ | رمز الدولار |
37 | 045 | 25 | 0100101 | % | النسبة المئوية |
38 | 046 | 26 | 0100110 | & | واو اللاتينية |
39 | 047 | 27 | 0100111 | ' | فاصلة علوية (أبوستروف) |
40 | 050 | 28 | 0101000 | ( | قوس بداية (هلالي) |
41 | 051 | 29 | 0101001 | ) | قوس نهاية (هلالي) |
42 | 052 | 2A | 0101010 | * | إجَّامة، نجمة، علامة ضرب |
43 | 053 | 2B | 0101011 | + | علامة جمع (زائد) |
44 | 054 | 2C | 0101100 | , | فاصلة لاتينية |
45 | 055 | 2D | 0101101 | - | مطة، شَرْطَة، علامة طرح (ناقص) |
46 | 056 | 2E | 0101110 | . | نقطة |
47 | 057 | 2F | 0101111 | / | قُطْرِي، خط مائل، علامة قسمة |
48 | 060 | 30 | 0110000 | 0 | رقم صفر |
49 | 061 | 31 | 0110001 | 1 | رقم واحد |
50 | 062 | 32 | 0110010 | 2 | رقم إثنان |
51 | 063 | 33 | 0110011 | 3 | رقم ثلاثة |
52 | 064 | 34 | 0110100 | 4 | رقم أربعة |
53 | 065 | 35 | 0110101 | 5 | رقم خمسة |
54 | 066 | 36 | 0110110 | 6 | رقم ستة |
55 | 067 | 37 | 0110111 | 7 | رقم سبعة |
56 | 070 | 38 | 0111000 | 8 | رقم ثمانية |
57 | 071 | 39 | 0111001 | 9 | رقم تسعة |
58 | 072 | 3A | 0111010 | : | نقطتان رأسيتان |
59 | 073 | 3B | 0111011 | ; | فاصلة منقوطة |
60 | 074 | 3C | 0111100 | < | علامة مقارنة أقل، شارة بداية |
61 | 075 | 3D | 0111101 | = | علامة مساواة |
62 | 076 | 3E | 0111110 | > | علامة مقارنة أكثر، شارة نهاية |
63 | 077 | 3F | 0111111 | ? | علامة الإستفهام اللاتينية |
64 | 0100 | 40 | 1000000 | @ | رمز آت |
65 | 0101 | 41 | 1000001 | A | حرف لاتيني كبير A |
66 | 0102 | 42 | 1000010 | B | حرف لاتيني كبير B |
67 | 0103 | 43 | 1000011 | C | حرف لاتيني كبير C |
68 | 0104 | 44 | 1000100 | D | حرف لاتيني كبير D |
69 | 0105 | 45 | 1000101 | E | حرف لاتيني كبير E |
70 | 0106 | 46 | 1000110 | F | حرف لاتيني كبير F |
71 | 0107 | 47 | 1000111 | G | حرف لاتيني كبير G |
72 | 0110 | 48 | 1001000 | H | حرف لاتيني كبير H |
73 | 0111 | 49 | 1001001 | I | حرف لاتيني كبير I |
74 | 0112 | 4A | 1001010 | J | حرف لاتيني كبير J |
75 | 0113 | 4B | 1001011 | K | حرف لاتيني كبير K |
76 | 0114 | 4C | 1001100 | L | حرف لاتيني كبير L |
77 | 0115 | 4D | 1001101 | M | حرف لاتيني كبير M |
78 | 0116 | 4E | 1001110 | N | حرف لاتيني كبير N |
79 | 0117 | 4F | 1001111 | O | حرف لاتيني كبير O |
80 | 0120 | 50 | 1010000 | P | حرف لاتيني كبير P |
81 | 0121 | 51 | 1010001 | Q | حرف لاتيني كبير Q |
82 | 0122 | 52 | 1010010 | R | حرف لاتيني كبير R |
83 | 0123 | 53 | 1010011 | S | حرف لاتيني كبير S |
84 | 0124 | 54 | 1010100 | T | حرف لاتيني كبير T |
85 | 0125 | 55 | 1010101 | U | حرف لاتيني كبير U |
86 | 0126 | 56 | 1010110 | V | حرف لاتيني كبير V |
87 | 0127 | 57 | 1010111 | W | حرف لاتيني كبير W |
88 | 0130 | 58 | 1011000 | X | حرف لاتيني كبير X |
89 | 0131 | 59 | 1011001 | Y | حرف لاتيني كبير Y |
90 | 0132 | 5A | 1011010 | Z | حرف لاتيني كبير Z |
91 | 0133 | 5B | 1011011 | [ | قوس بداية معقف |
92 | 0134 | 5C | 1011100 | \ | قُطْرِي معكوس |
93 | 0135 | 5D | 1011101 | ] | قوس نهاية معقف |
94 | 0136 | 5E | 1011110 | ^ | علامة إقحام (شكلة قبعة) |
95 | 0137 | 5F | 1011111 | _ | شرطة سفلية |
96 | 0140 | 60 | 1100000 | ` | شكلة خلفية |
97 | 0141 | 61 | 1100001 | a | حرف لاتيني صغير a |
98 | 0142 | 62 | 1100010 | b | حرف لاتيني صغير b |
99 | 0143 | 63 | 1100011 | c | حرف لاتيني صغير c |
100 | 0144 | 64 | 1100100 | d | حرف لاتيني صغير d |
101 | 0145 | 65 | 1100101 | e | حرف لاتيني صغير e |
102 | 0146 | 66 | 1100110 | f | حرف لاتيني صغير f |
103 | 0147 | 67 | 1100111 | g | حرف لاتيني صغير g |
104 | 0150 | 68 | 1101000 | h | حرف لاتيني صغير h |
105 | 0151 | 69 | 1101001 | i | حرف لاتيني صغير i |
106 | 0152 | 6A | 1101010 | j | حرف لاتيني صغير j |
107 | 0153 | 6B | 1101011 | k | حرف لاتيني صغير k |
108 | 0154 | 6C | 1101100 | l | حرف لاتيني صغير l |
109 | 0155 | 6D | 1101101 | m | حرف لاتيني صغير m |
110 | 0156 | 6E | 1101110 | n | حرف لاتيني صغير n |
111 | 0157 | 6F | 1101111 | o | حرف لاتيني صغير o |
112 | 0160 | 70 | 1110000 | p | حرف لاتيني صغير p |
113 | 0161 | 71 | 1110001 | q | حرف لاتيني صغير q |
114 | 0162 | 72 | 1110010 | r | حرف لاتيني صغير r |
115 | 0163 | 73 | 1110011 | s | حرف لاتيني صغير s |
116 | 0164 | 74 | 1110100 | t | حرف لاتيني صغير t |
117 | 0165 | 75 | 1110101 | u | حرف لاتيني صغير u |
118 | 0166 | 76 | 1110110 | v | حرف لاتيني صغير v |
119 | 0167 | 77 | 1110111 | w | حرف لاتيني صغير w |
120 | 0170 | 78 | 1111000 | x | حرف لاتيني صغير x |
121 | 0171 | 79 | 1111001 | y | حرف لاتيني صغير y |
122 | 0172 | 7A | 1111010 | z | حرف لاتيني صغير z |
123 | 0173 | 7B | 1111011 | { | قوس حاصرة بداية |
124 | 0174 | 7C | 1111100 | | | سطر عمودي |
125 | 0175 | 7D | 1111101 | } | قوس حاصرة نهاية |
126 | 0176 | 7E | 1111110 | ~ | تلدة |
127 | 0177 | 7F | 1111111 | DEL | Delete - حذف |
على مر الزمن ومع التقدم التقني، ظلت التسميات المستعملة نفسها لكن المعنى اختلف[3] لأنه يرتبط بتقنيات لم تعد مستعملة:
- رمز الحذف (DEL): كان معناه الأصلي في آلات الرقن التي تتعامل مع البطاقات المثقوبة، مثل تيليتايب. حيث أنه في حال إرتكاب المستعمل لخطأ، كان هناك زر يرجع رأس الكتابة إلى الحرف السابق ويثقب جميع الثقوب (أي ما يعادل 1111111 أو 127، وهو رمز DEL)، ومن يستقبل الرسالة عليه أن يتجاهل وجود ذلك الرمز «المحذوف». لكنه بالتدريج صار يستعمل في نفس سياقات استعمال BS لحذف الرمز السابق.
- رمز العودة للخلف (BS): رمز مرتبط بزر Backspace على لوحات المفاتيح الحديثة. وقع خلط بينه وبين رمز DEL أيهما معني بحذف الرمز السابق، إذ أن توزيعهما على الأزرار وطريقة عملهما إختلفت حسب نوع الجهاز.
- رمز الهروب (ESC): كان القصد الأصلي منه السماح بإرسال القيم الرقمية لرموز التحكم، عوضا عن تنفيذ معناها مباشرة على الحاسب. في الإستعمالات الحديثة، صار يعني إيقاف عمل العملية الحالية أو الخروج التام من التطبيق.
- عودة السطر (CR) و تخطي السطر الجديد (LF): كانت في الأصل مرتبطة بآلات الرقن، والتي تشترط في بداية سطر جديد كلتي التعليمتين، الأولى لتحريك رأس الكتابة إلى مكان أول السطر، والثانية لتحريك الورقة. ورثت أنظمة تشغيل الحاسب عرف استعمال التعليمتين تلو بعض، لكن بعض البرامج تستعمل تخطي السطر الجديد (LF) وحده، وأحدث هذا فروقا ومشاكل توافق بين المعايير.
- نهاية الملف، كان يشار لها برمز المعوض (SUB) للإشارة لمكان إنتهاء الملف (و يسمى في لغات البرمجة EOF)، لكن بعض الإصطلاحات البرمجية تستعمل رمز العدم (NUL) بديلا عن ذلك.
التاريخ
رجوعاً إلى أوائل الستينيات، لم يكن هناك ما يعرف بنظام الآسكي أو بأسلوب موحد. من هذا المنطلق كانت الشركات المصنعة لأجهزة الحاسب وآلات رقن الأوراق المثقوبة، تؤدي مهامها بأي طريقة كانت ترى بأنها مناسبة لتأدية الغرض. أدى ذلك إلى وضعية من الفوضى حيث لم يكن هناك وسيلة لاتصال أجهزة الكمبيوتر المختلفة مع بعضها البعض. فقد كان لكل شركة مصنعة طرقها الخاصة المستخدمة في تمثيل الحروف الأبجدية والأرقام وأمثالها (تقدر بالستين في نفس الفترة)، وأحيانا في نفس الشركة تختلف هذه الطرق: على سبيل المثال كان لشركة IBM مع اختلاف معداتها تسع مجموعات أحرف مختلفة.
قام بوب بيمير الذي كان يعمل لصالح شركة آي بي إم (شركة أعمال دولية) بالإضطلاع بدور هام في تأسيس نظام الآسكي ابتداء من عام 1960، وقد لقب تبعا لذلك «والد الآسكي».[4]
رعى المعهد الوطني الأمريكي للمقاييس (ANSI)، وقد كان وقتها معروفا بجمعية المعايير الأمريكية (American Standards Association أو ASA) تأسيس لجنة أسموها X3 عكفت على تحديد «شفرة المعيار الأمريكي لتبادل المعلومات» (American Standard Code for Information Interchange) وإختصارها ASCII. ظهرت أول مراجعات هذا المعيار في سنة 1963 ومرت على تنقيحات كثيرة آخرها كان في سنة 1986.
أصناف الحروف
حروف التحكم
يخصص الأسكي الحروف الاثنين والثلاثين الأولى من أجل حروف التحكم.
حدود إستعمالات ترميز ASCII
يخلو نظام ترميز ASCII من الرموز الكافية لإمكانية تمثيل النصوص بلغات غير اللغة الإنكليزية، كما أن كمية الرموز الخاصة التي يحتويها محدودة، مما أدى لضرورة استعمال أنظمة ترميز نصوص مختلفة لغيرها من اللغات على غرار العربية أو الروسية أو لغات أوروبا الشرقية وغيرها الكثير.
ظهرت على ثلاث فترات، مقاربات بديلة مختلفة لتوطين ترميز النصوص جراء حدود المعيار الأمريكي ASCII:
- ظهور معايير محلية، طول الرمز فيها بايت واحد، وهي أسهلها إنشاء. على سبيل المثال يذكر معيار ASMO 449 للغة العربية الذي هو معيار ASCII بتعويض الحروف اللاتينية بمقابلات عربية. من مساوئ هذه الطريقة أن كم الرموز الذي يمكن التعبير عنه محدود بهذا المعيار، ويجب توضيح الترميز لزوما خارج النص.
- ظهور معايير إمتدادية، يكون للنص فيه سياق، وبإختلاف السياقات تكون لنفس القيمة رموز مختلفة (مثل أسرة معايير ISO/CEI 2022). على سبيل المثال نذكر فكرة «صفحات الترميز» (code page) على غرار ويندوز 1252 للغة العربية. من مساوئ هذه الطريقة أنها تسبب تضاربا في تأويل النص بين المعايير المختلفة.
- ظهور معايير شاملة لعدة لغات وتستعمل عدة بايتات، وكان معيار يونيكود الكفيل بهذا لكونه يغطي العدد الأكبر من اللغات.
في خضم هذه المراحل، تمت إعادة تصنيف وتسمية معيار ASCII الأصلي قبل كل تلك البدائل الجديدة إلى الأسماء التالية:
- ANSI X3.4:1986 (و أحيانا يسمى، خطأَ، «معيار ANSI» مع أن اللفظة تعني في الأصل «المعهد الوطني الأمريكي للمقاييس» وهذا المعيار كان قرارا منه)
- ISO/CEI 646-US
- صفحة الترميز Code Page IBM 367
- US-ASCII ، وهي تسمية عامة يمكن أن تحيل على أي من الأشكال السابقة لهذا المعيار.
مازال استعمال ASCII دارجا إلى اليوم في الحواسيب على نطاق واسع، وبعض خدمات البريد الإلكتروني (MIME) ورسائل الهاتف SMS مازالت تستعمل النسخة الأصلية بطول 7 بتات للحرف بدل 8. كما أن أكثر المعايير البديلة الرائجة حاليا تحافظ على التوافق مع قيم رموزه.
تغيرات نظام أسكي وأنظمة أخرى مستمدة منه
يونيكود
قد يمثل يونيكود الحروف في ثماني بتات أو ستة عشر بتا أو اثنين وثلاثين بتا. هذه الأنظمة الثلاثة تسمى على التوالي UTF-8 وUTF-16 وUTF-32.
انظر أيضًا
مراجع
- "Pronunciation for ASCII"، Merriam Webster (audio)، مؤرشف من الأصل في 08 ديسمبر 2019، اطلع عليه بتاريخ 14 أبريل 2008.
- "Ascii Table - ASCII character codes and html, octal, hex and decimal chart conversion"، www.asciitable.com، مؤرشف من الأصل في 9 ديسمبر 2020، اطلع عليه بتاريخ 09 ديسمبر 2020.
- "ASCII codes"، text-symbols.com (باللغة الإنجليزية)، مؤرشف من الأصل في 9 ديسمبر 2020، اطلع عليه بتاريخ 09 ديسمبر 2020.
- "History - ASCII-World"، ascii-world.wikidot.com، مؤرشف من الأصل في 9 ديسمبر 2020، اطلع عليه بتاريخ 09 ديسمبر 2020.
- بوابة كتابة
- بوابة الولايات المتحدة
- بوابة علم الحاسوب