أكواد الأحرف — ASCII و Unicode
| English | العربية |
|---|---|
| Unicode/ˈjuːnɪkəʊd/ | يوني كود (Unicode) |
| character set/ˈkærɪktə set/ | مجموعة الرموز |
| ASCII/ˈæski/ | ASCII |
| encoding/enˈkəʊdɪŋ/ | التشفير |
| code point/kəʊd pɔɪnt/ | نقطة الكود |
| UTF-8/ˌjuː tiː ˈef eɪt/ | UTF-8 |
البريد الإلكتروني الذي وصل كحروف غير مفهومة
- من خلال 1990s، كانت الرسائل المطبوعة في وارسو والمقروءة في طوكيو غالباً ما تصل على شكل جدار من nonsens. كان كلا الحاسوبين يخزنان ثمانية بت لكل حرف. ببساطة اختلفا حول معنى الأنماط العليا 128.
- صفحة الأكواد البولندية وضعت الحروف البولندية هناك. وضعت اليابان أحرفها الخاصة هناك. لم يتم تشويه البيانات أثناء النقل: وصلت البايتات سليمة وقُرئت بناءً على جدول مختلف.
- الحل كان التوقف عن وجود جداول لكل بلد ومنح كل حرف في كل نظام كتابي رقماً واحداً للأبد. هذا هو اليونيكود، ولهذا السبب تظهر الإيموجي التي ترسلها بنفس الصورة.
- هذه الدرس يوضح كيف يتحول النص إلى أرقام: مجموعات الأحرف، ASCII، اليونيكود، والتشفيرات التي تخزنها.
مجموعة الأحرف تمنح كل حرف رقماً
- الحاسوب لا يخزن حروفاً، بل أرقاماً فقط. مجموعة الأحرف هي المجموعة التي يمكن للحاسوب تمثيلها، ولكل منها كود ثنائي خاص به.
- الرقم الخاص بالحرف الواحد هو نقطة الكود.
Aهي 65،aهي 97،0الرمز الرقمي هو 48. - نقطة الكود ليست معنى الحرف؛ بل هي تسمية متفق عليها. النص مقروء لأن كلا الآلتين تستخدمان نفس مجموعة الأحرف.

الحرف هو الصورة؛ البايت هو الرقم
يُخزن الحرف كرقم
لكل حرف رقم كود — 'A' هو 65. قلب البتات لرؤية هذا الكود بالنظام الثنائي والستة عشر، تماماً كما يحتفظ به الكمبيوتر.
مجموعة أحرف مثل ASCII تعرّف:
تربط مجموعة الأحرف كل حرف برقم (نقطة كود)، وهو ما يخزنه الكمبيوتر فعلياً.
ASCII
- ASCII (American Standard Code for Information Interchange) يستخدم 7 بتات، مما يمنح $2^7 = 128$ نقاط كود: الحروف اللاتينية الأساسية، الأرقام، علامات الترقيم، و 32 رمز تحكم مثل carriage return.
- Extended ASCII يستخدم 8 بتات، مما يمنح 256 نقطة كود. النصف السفلي (128) مطابق لـ ASCII؛ النصف العلوي (128) يختلف حسب المنطقة، وهذا بالضبط ما أدى لفشل ذلك البريد الإلكتروني.
- لن يُطلب منك حفظ أي كود، لكن سيُطلب منك الأعداد: 7 بتات، 128؛ 8 بتات، 256.
كم عدد نقاط الكود المختلفة التي يمتلكها ASCII المكون من 7 بتات؟
تعطي 7 بتات $2^7 = 128$ نقطة كود.
كم عدد نقاط الكود المختلفة التي يمتلكها ASCII الموسع؟
تعطي 8 بتات 2^8 = 256. الـ 128 السفلية تطابق ASCII العادي المكون من 7 بتات؛ الـ 128 العلوية تختلف حسب المنطقة.
Unicode
- Unicode هي مجموعة أحرف عالمية: نقطة كود واحدة لمعظم الحروف في كل نظام كتابي حي أو ميت، بالإضافة إلى الرموز والإيموجي، أكثر من 149,000 منها.
- نقطة الكود منفصلة عن كيفية تخزينها. التشفير يحول نقطة الكود إلى بايتات.
- UTF-8 يستخدم UTF-8 1 إلى 4 بايتات لكل حرف وهو متوافق مع ASCII: أول 128 نقاط الكود هي بايت واحد، مطابقة لـ ASCII. UTF-16 يستخدم 2 أو 4 بايتات؛ UTF-32 يستخدم ثابت 4.
أي مما يلي صحيح حول UTF-8؟
UTF-8 هو ترميز يוניكود متعدد الأطوال (1–4 بايتات)؛ تتطابق أول 128 نقطة كود معه مع ASCII، لذا فإن نص ASCII العادي صالح كـ UTF-8.
ما هي العلاقة بين Unicode و UTF-8؟
تحدد المجموعة الأرقام؛ بينما يقرر الترميز عدد البايتات التي تأخذها كل رقم. UTF-16 و UTF-32 هما ترجمات أخرى لنفس المجموعة.
مثال محلول: مقارنة ASCII و Unicode
- اذكر ميزة واحدة وعيباً واحداً لاستخدام Unicode بدلاً من ASCII. [2]
- الميزة: يمثل Unicode عدداً أكبر بكثير من الأحرف، لذا يمكن تخزين النص بأي نظام كتابي (الصيني، العربي، اليوناني) والإيموجي، ويمكن مستند واحد دمج اللغات؛ الملفات قابلة للتبديل لأنه لا توجد صفحة أكواد خاصة بكل بلد قد تتعارض.
- العيب: بالنسبة للنص الإنجليزي فقط، عادة ما يكون ملف Unicode أكبر حجماً، لأن الحرف الواحد قد يأخذ أكثر من بايت واحد.
- كلا الجانبين مطلوبان. قول "لديه أحرف أكثر" وحده يكفي لعلامة واحدة من أصل اثنتين.
من المزايا الرئيسية لـ Unicode مقارنة بـ ASCII أنه:
يغطي Unicode تقريبًا كل نظام كتابة بالإضافة إلى الرموز والإيموجي — وهو أبعد بكثير من مجموعة الإنجليزية الأساسية في ASCII.
بالنسبة للنص الإنجليزي فقط، عادة ما يكون ملف Unicode أكبر من نفس النص في ASCII.
يمكن أن تستخدم ترميزات Unicode عددًا أكبر من البايتات لكل حرف، لذا يكون النص الإنجليزي العادي عادةً أكبر منه في 7-bit ASCII — وهو التنازل عن الدقة مقابل التغطية الشاملة.
ما هي مزايا Unicode مقارنة بـ ASCII؟ حدد كل الخيارات الصحيحة.
الحجم هو المقابلة وليس ميزة: بالنسبة للنص الإنجليزي العادي، عادة ما يكون ملف Unicode أكبر.
مثال محلول: حجم ملف نصي
- رسالة مكونة من 500 حرفاً مخزنة في Extended ASCII. ما هو حجم الملف بالبايتات؟
- Extended ASCII يستخدم 8 بتات، بايت واحد، لكل حرف، لذا $500 \times 1 = 500$ بايتات، أو $500 \times 8 = 4000$ بتات.
- نفس الرسالة في UTF-32؟ أربعة بايتات لكل حرف، إذن 2000 بايت.
- أظهر البتات لكل حرف، اضرب، ثم حوّل مرة واحدة. خلط البتات والبايتات في منتصف الحل هو الخطأ الشائع الذي يؤدي لفقدان العلامة.
رسالة مكونة من 500 حرف مخزنة في ASCII الموسع. كم عدد البايتات المطلوبة (بغض النظر عن أي ترويسة)؟
ثمانية بتات، بايت واحد، لكل حرف: 500 × 1 = 500 بايت، أو 4000 بت. في UTF-32، يتطلب نفس النص 2000 بايت.
قراءة الحرف بالثنائي والسداسي عشر
- بما أن نقطة الكود مجرد رقم، فإنها تتحول كأي رقم آخر.
Aهي 65، وهي0100 0001بالثنائي و41بالسداسي عشر. - نمطان مفيدان: الأرقام
0إلى9تبدأ من 48، والأحرف الصغيرة أبعد بمقدار 32 عن الأحرف الكبيرة، لذاa(97) هيA(65) زائد 32. هذا الفرق يمثل بتاً واحداً. - سؤال يعطيك
A= 65 ويطلبEيريد $65 + 4 = 69$، وليس جدولاً محفظاً.
رمز ASCII لل A هو 65. ما هو رمز ASCII لل E؟
الأحرف متتالية، لذا E تأتي بعد A بأربعة أماكن. لا حاجة لحفظ شيء غير قيمة مرجعية واحدة.
علامات ضائعة
- ASCII هي 7 بتات و 128 نقطة كود؛ Extended ASCII هي 8 بتات و 256. لا تكتب 8 بتات لـ ASCII العادي.
- Unicode هي مجموعة أحرف؛ UTF-8 هي تشفير لها. هما ليسا مجموعتين منافستين.
- UTF-8 متغير الطول، من 1 إلى 4 بايتات، وليست دائماً بايتاً واحداً ولا أربعة بايتات دائماً.
- عيب Unicode هو حجم الملف للنص الإنجليزي البسيط، وليس "إنه أبطأ" أو "يصعب قراءته".
لقد فهمت الأمر
- مجموعة الأحرف تمنح كل حرف نقطة كود؛ النص هو أرقام بالإضافة إلى اتفاق حول كيفية قراءتها
- ASCII: 7 بتات، 128 نقطة كود، للغة الإنجليزية فقط · Extended ASCII: 8 بتات، 256، النصف العلوي يختلف حسب المنطقة
- Unicode: نقطة كود واحدة لكل نظام كتابي وإيموجي، مخزنة عبر تشفير؛ UTF-8 من 1 إلى 4 بايتات ومتوافقة مع ASCII
- يكتسب Unicode أحرفاً وقابلية للتنقل واللغات المختلطة؛ ولكنه يزيد حجم الملف في النصوص الإنجليزية البسيطة