افهم لماذا تظهر المحارف المشكّلة مُشوّهة أحيانًا، وما الذي تُخفيه نهايات الأسطر غير المرئية.
افتح هذا الدرس في Kodokonالآلة لا تعرف ما هو الحرف A. فهي لا تتعامل إلا مع الأرقام. ولكتابة نص، كان لا بدّ إذن من الاتفاق على جدول تقابل: الرقم 65 يساوي A، و66 يساوي B، وهكذا. وتُسمّى هذه الاتفاقية ترميزًا. وأقدمها، ASCII، يعود إلى ستينيات القرن الماضي ولم يكن يغطّي إلا الأبجدية الإنجليزية: لا é، ولا ç، ولا ü، ولا محرفًا صينيًّا واحدًا.
ثم اخترع كل بلد جدوله الخاص، فحلّت الفوضى: ملف فرنسي يُفتح بالجدول الروسي كان يظهر كطلاسم. والحل الحديث يُسمّى Unicode، وهو فهرس واحد يمنح رقمًا لـكل محرف في كل اللغات، بما في ذلك الرموز التعبيرية. وUTF-8 هو الطريقة المعيارية لكتابة هذه الأرقام في ملف. أما اليوم فالقاعدة بسيطة وبلا استثناء: احفظ ملفاتك دائمًا بترميز UTF-8.
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. وهذا موروث مباشر من الآلات الكاتبة، حيث كانت هناك حاجة إلى حركتين منفصلتين: إعادة العربة إلى الوراء، ثم إنزال سطر واحد.
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é على شكل é؟