Kodokon kodokon.com

المحارف المشكّلة وUTF-8 ونهايات الأسطر

افهم لماذا تظهر المحارف المشكّلة مُشوّهة أحيانًا، وما الذي تُخفيه نهايات الأسطر غير المرئية.

7 دقيقة · 3 أسئلة

افتح هذا الدرس في Kodokon

الآلة لا تعرف ما هو الحرف A. فهي لا تتعامل إلا مع الأرقام. ولكتابة نص، كان لا بدّ إذن من الاتفاق على جدول تقابل: الرقم 65 يساوي A، و66 يساوي B، وهكذا. وتُسمّى هذه الاتفاقية ترميزًا. وأقدمها، ASCII، يعود إلى ستينيات القرن الماضي ولم يكن يغطّي إلا الأبجدية الإنجليزية: لا é، ولا ç، ولا ü، ولا محرفًا صينيًّا واحدًا.

ثم اخترع كل بلد جدوله الخاص، فحلّت الفوضى: ملف فرنسي يُفتح بالجدول الروسي كان يظهر كطلاسم. والحل الحديث يُسمّى Unicode، وهو فهرس واحد يمنح رقمًا لـكل محرف في كل اللغات، بما في ذلك الرموز التعبيرية. وUTF-8 هو الطريقة المعيارية لكتابة هذه الأرقام في ملف. أما اليوم فالقاعدة بسيطة وبلا استثناء: احفظ ملفاتك دائمًا بترميز UTF-8.

TEXT
Written in UTF-8, read as UTF-8    ->  Creme brulee (accents correct)
Written in UTF-8, read as Latin-1  ->  Crème brûlée
Written in Latin-1, read as UTF-8  ->  Cr?me br?l?e
الملف نفسه مقروءًا بالجدول الخاطئ يتحوّل إلى طلاسم.

الشيء غير المرئي الثاني: نهاية السطر. عندما تضغط على Enter، لا يُرسَم أي خط في الملف. بل يُضاف محرف أو محرفان غير مرئيَّين، وهنا أيضًا لم تتّفق الأنظمة فيما بينها أبدًا. يستخدم macOS وLinux محرفًا واحدًا، LF (line feed أي تغذية سطر)، ويُكتب \n. أما Windows فيستخدم محرفين متتاليين، CRLF (carriage return ثم line feed)، ويُكتبان \r\n. وهذا موروث مباشر من الآلات الكاتبة، حيث كانت هناك حاجة إلى حركتين منفصلتين: إعادة العربة إلى الوراء، ثم إنزال سطر واحد.

TEXT
What you see on screen:

Hello
Hi there

What the file really contains:

macOS / Linux (LF)     Hello\nHi there
Windows (CRLF)         Hello\r\nHi there
ملفان يبدوان متطابقين على الشاشة، ومحتويان مختلفان في الواقع.

اختبار المعرفة

تأكّد من أنك تذكّرت النقاط الأساسية في هذا الدرس.

  1. ماذا يحدث عندما يظهر é على شكل é؟
    • الملف يُقرأ بترميز مختلف عن الذي كُتب به
    • الملف تالف ويجب إعادة إنشائه
    • النظام حذف علامة التشكيل
    • الخط مفقود
  2. أي نهاية سطر استخدمها Windows تاريخيًّا؟
    • CRLF
    • LF
    • CR وحده
  3. أي إعدادات ينبغي اعتمادها في محرّر الشيفرة؟
    • UTF-8 للترميز وLF لنهايات الأسطر
    • ASCII للترميز وCRLF لنهايات الأسطر
    • Latin-1 للترميز وCR لنهايات الأسطر