المقدمة

بنيت هذه الأداة لسبب بسيط. التعامل اليدوي في كل مرة كان مرهقًا.

ملفات CSV من الأنظمة الداخلية، وملفات محولة من Excel، وملفات إعدادات صادرة من Linux أو Windows أو قواعد البيانات. مع كل اختلاف في المصدر يختلف الترميز ونهايات الأسطر ووجود BOM.

  • توقعت UTF-8 فكان Shift_JIS
  • توقعت LF فكان CRLF
  • بعض الأنظمة تحتاج BOM، وأنظمة أخرى تتعطل بسببه

الاعتماد على العين والخبرة في كل مرة لا يصلح على نطاق واسع. لذلك أنشأت أداة تقبل أي مصدر وتوحّد المخرجات حسب متطلبات جهة الاستيراد.


المشكلة الحقيقية ليست ملفًا واحدًا تالفًا

إذا تلف ملف واحد يمكن عادةً إصلاحه. الصعب عندما تصل 10 أو 100 ملف دفعة واحدة ومن مصادر متباينة.

والأصعب أن لكل نظام استيراد “حقيقته” الخاصة.

  • النظام A يقبل UTF-8 بدون BOM فقط
  • النظام B أكثر استقرارًا مع UTF-8 مع BOM
  • النظام C يفترض Shift_JIS، وUTF-8 قد يبدو مقروءًا لكنه يفشل عند الاستيراد

في هذه الحالة، النصيحة العامة “وحّد كل شيء إلى UTF-8” لا تفيد. المطلوب تشغيل آمن قابل للتكرار حسب وجهة الاستخدام.


ما الذي أردت تحقيقه بهذه الأداة

الفكرة تقوم على ثلاث نقاط فقط:

  1. قبول الملفات من أي مصدر
  2. التحويل وفق متطلبات نظام الوجهة
  3. عدم زيادة الحوادث حتى في المعالجة الدفعية

هذه ليست أداة استعراض تقني، بل أداة لتقليل الاحتكاك التشغيلي.


الإجراء الذي أستخدمه فعليًا

1. حدّد مواصفات المخرجات أولًا

لا تبدأ بافتراضات الإدخال؛ ثبّت مخرجاتك أولًا. ثبّت هذه العناصر الثلاثة:

  • الترميز (UTF-8 / Shift_JIS …)
  • نهاية السطر (LF / CRLF)
  • BOM (مع / بدون)

إذا بقيت هذه النقاط غامضة، تتغير النتائج بتغيّر الشخص المسؤول.

2. قسّم الهدف إلى دفعات صغيرة

لا تمرّر كل الكمية مباشرة. قسّم حسب النظام أو الفترة أو نوع الملف، وابدأ بدفعات صغيرة.

السبب: عند الفشل يمكن الرجوع للخلف. تشغيل كل شيء دفعة واحدة سريع فقط إذا نجح.

3. ثبّت الشروط ثم نفّذ التحويل الدفعي

استخدم أداة تحويل الترميز بشروط ثابتة لكل وجهة. لا تغيّر الإعدادات أثناء التنفيذ. الأهم هو قابلية إعادة نفس العملية بنفس الشروط.

4. لا تجعل الفحص البصري معيار النجاح

“الملف يُفتح إذًا هو سليم” بداية لكثير من الحوادث. على الأقل تحقّق من:

  • تطابق عدد الصفوف قبل/بعد
  • عدم انهيار عدد الأعمدة في CSV/TSV
  • عدم زيادة (حرف الاستبدال)
  • ثبات طول ونوع أحرف الأعمدة المفتاحية (ID/Code)

إذا فشل أي تحقق، لا تنتقل إلى الاستيراد.


BOM ليس عقيدة، بل قرار حسب الطرف الآخر

الجدل حول BOM غالبًا غير مفيد عمليًا. المهم فقط: كيف يقرأ النظام المقابل الملف.

  • إذا كان النظام المقابل مستقرًا مع BOM فاستخدمه
  • إذا كان يتعطل بسبب BOM فأزله

الأولوية ليست “الصيغة النظرية الصحيحة” بل “الصيغة التي لا تكسر الطرف الآخر”. هذا هو التشغيل الواقعي.


قيمة الأداة ليست التحويل بحد ذاته

القيمة الحقيقية في أمرين:

  • القرار لا يختلف من شخص لآخر
  • تكلفة التحقق المتكرر تنخفض

لا يمكن جعل حوادث الترميز صفرًا مطلقًا. لكن يمكن إيقاف تكرار نفس الحوادث. لهذا أعددت أداة تستقبل كل شيء وتعيده بصيغة مناسبة للغرض.


الخلاصة

هذه الأداة لم تولد من تنظير مثالي. بل من حاجة عملية لإزالة عبء تعديل الترميز المتكرر.

استقبال ملفات من مصادر مختلفة، ثم توحيد الترميز ونهايات الأسطر وBOM حسب متطلبات الوجهة، ثم الإخراج. أتمتة هذا المسار وحده تجعل التشغيل أسهل بكثير.

معالجة تشوه النص ليست عملًا يعتمد على التحمل الشخصي. يجب تحويلها إلى إجراء قابل لإعادة الإنتاج يحقق نفس النتيجة مع أي شخص. عندها فقط يمكن القول إن الإنقاذ الدفعي آمن.