تصدّر قائمة عملاء. تفتحها في Excel. الأسماء العربية جدار من Ø وÙ، وكل سطر محشور في العمود A، وأرقام العملاء فقدت أصفارها في المقدّمة.
ثلاثة أعطال منفصلة. سبب واحد: ملف CSV لا يحمل بيانًا لما هو. لا ترميز المحارف، ولا الفاصل، ولا نوع أي عمود. على كل قارئ أن يخمّن، وExcel يخمّن بقواعد كانت معقولة سنة 1995.
العطل الأول: الترميز
ملفك بترميز UTF-8، وهو الترميز الذي يستعمله كل شيء تقريبًا منذ عشرين سنة. يفتحه Excel على افتراض صفحة الرموز الإقليمية لنظامك — Windows-1256 للعربية، وWindows-1252 لأوروبا الغربية.
البايتات صحيحة. الجدول المستعمل لقراءتها ليس كذلك. الحرف العربي بايتان في UTF-8، وقراءته بايتًا بايتًا عبر Windows-1252 تجعل هذين البايتين Ø وشيئًا آخر. من هنا صار أحمد إلى Ø£ØÙ…د.
AD غير مرئية، والنقاط الثلاث عند 85 علامة طباعية — ولهذا تبدو الفوضى اعتباطية. لم يضع شيء، فإعادة قراءة الملف نفسه بترميز UTF-8 تسترجع الاسم بالضبط.الإصلاح ثلاثة بايتات غير مرئية في أول الملف. علامة ترتيب بايتات UTF-8 — EF BB BF — تخبر Excel أن الملف بترميز UTF-8 فيكفّ عن التخمين. كل أداة على هذا الموقع تصدّر CSV تكتب واحدة.
إن كان عندك ملف معطوب أصلًا، فالإصلاح قابل للرجوع: لم يضع شيء، وإنما أُسيئت قراءة البايتات، فإعادة قراءتها صحيحةً تسترجع النص.
العطل الثاني: الفاصل
ملفك مفصول بفواصل. Excel على نظام أوروبي أو شرق أوسطي يتوقّع فواصل منقوطة، فلا يجد فاصلًا إطلاقًا ويضع كل سطر كاملًا في خلية واحدة.
هذا ليس خللًا. في المناطق التي تكون فيها الفاصلة هي الفاصل العشري — 3,14 بدل 3.14 — لا تستطيع الفاصلة أن تفصل الحقول أيضًا، فتستعمل تلك النسخ من Excel فاصلة منقوطة وتسمّيها «فاصل القوائم». الملف نفسه صحيح على جهاز وغير مقروء على الذي يليه.
لا يوجد فاصل يصلح في كل مكان. تستطيع أن تطابق منطقة المستلم، أو تستعمل قيمًا مفصولة بجدولة، أو تستورد عبر تبويب البيانات في Excel حيث يمكن ذكر الفاصل صراحةً. الثلاثة كلّها تقتضي معرفة شيء عن الطرف الآخر.
العطل الثالث: Excel يغيّر بياناتك
هذا هو الذي يُحدث ضررًا باقيًا، لأن الملف يفتح ومظهره سليم.
يقرّر Excel ما في كل عمود بالنظر إليه، وهو واثق:
00123تصير123. الأصفار في المقدّمة لا وزن لها في العدد، فرمز المنتج صار الآن رمز منتج آخر.+962 79 555 1234يصير شيئًا آخر تمامًا، أو خطأً، لأنه يبدأ بعلامة زائد.1-2يصير تاريخًا. كذلك3/4. كذلك — على نحو مشهور — أسماء جينات بعينها، ولهذا أعادت أوساط علم الوراثة تسمية عدّة جينات سنة 2020 بدل مواصلة معركة الجداول.- العدد الطويل يصير ترميزًا علميًّا، وبعد خمسة عشر رقمًا تصير الأرقام الأخيرة أصفارًا. أرقام بطاقات الائتمان وأرقام IBAN أطول من خمسة عشر رقمًا.
لا شيء من هذا يُستردّ بالإغلاق دون حفظ إن كنت قد حفظت. القيم الأصلية ذهبت، والملف ما زال يبدو جدولًا سليمًا.
ما الذي يصلحه فعلًا
استعمل صيغة xlsx بدل CSV. هذا يحلّ الأعطال الثلاثة دفعةً واحدة. الصيغة تعلن ترميزها بنفسها، ولا فاصل فيها، وتخزّن نوع كل خلية صراحةً. رقم العميل المكتوب نصًّا يبقى نصًّا.
تحويل CSV إلى مصنّف حقيقي يأخذ ثوانيَ ويزيل صنف المشكلة كلّه. إن كنت تتحكّم بالتصدير، فصدّر xlsx.
إن كان لا بدّ من CSV: اكتب علامة ترتيب بايتات، وطابق فاصل المستلم، وأخبره أن يستورد عبر البيانات ← من نص بدل النقر المزدوج، ليتسنّى تعليم الأعمدة نصًّا.
إن كنت تستقبل لا ترسل: افتح Excel أولًا، ثم استعمل البيانات ← من نص/CSV. ذلك الحوار يتيح لك ضبط الترميز والفاصل وتعليم الأعمدة نصًّا قبل تحليل أي شيء. النقر المزدوج على الملف يتخطّى ذلك كلّه.
لماذا لا نصلح Excel وحسب؟
سؤال وجيه. السلوك عمره عقود، وتغييره يكسر قدرًا هائلًا من العمل القائم — فكل ملف يفتح اليوم صحيحًا يجب أن يستمرّ كذلك. أضافت Microsoft خيار «لا تحوّل» في الإصدارات الأخيرة، لكن الإعدادات الافتراضية بقيت كما كانت.
عمليًّا، الجواب ألّا تصارعه. لم يكن CSV مواصفةً قطّ؛ بل عرفًا صار معيارًا بحكم الأمر الواقع دون أن يكتسب البيانات الوصفية التي تحتاجها الصيغة. حيث تكون البيانات مهمّة، استعمل صيغةً تصف نفسها.
النسخة القصيرة
النص الطلاسم يعني أن الترميز خُمّن خطأً — أضف علامة ترتيب بايتات. وقوع كل شيء في عمود واحد يعني أن الفاصل خُمّن خطأً — طابق منطقة المستلم. غياب الأصفار في المقدّمة وظهور تواريخ مكان نصّ يعني أن Excel قرّر أنواع بياناتك عنك — وهذا وحده لا يمكن التراجع عنه.
الثلاثة كلّها تختفي إن أرسلت ملف xlsx بدلًا من ذلك.