سؤال

هل أنا على صواب في افتراض أن الاختلاف الوحيد بين "ملفات Windows" و"ملفات Unix" هو فاصل الأسطر؟

لدينا نظام تم نقله من جهاز يعمل بنظام Windows إلى جهاز يعمل بنظام Unix ونواجه مشكلات في التنسيق.

أحتاج إلى أتمتة الترجمة بين نظام التشغيل Unix/Windows قبل تسليم الملفات إلى النظام في "نظام النقل" الخاص بنا.ربما سأحتاج إلى شيء لتحديد التنسيق الحالي وشيء لتحويله إلى التنسيق الآخر.إذا كان هذا هو الفرق الكبير فقط في السطر الجديد، فأنا أفكر في قراءة الملفات باستخدام java.io فقط.بقدر ما أعرف، فإنهم قادرون على التعامل مع كليهما باستخدام readLine.وبعد ذلك فقط اكتب كل سطر مرة أخرى

while (line = readline)
    print(line + NewlineInOtherFormat)
....

ملخص:

سامجودسون:

وهذا مجرد اختلاف في الملفات النصية، حيث يستخدم UNIX تغذية سطر واحدة (LF) للإشارة إلى سطر جديد، ويستخدم Windows تغذية سطر/إرجاع السطر (CRLF) ويستخدم Mac مجرد CR.

الذي سيبجيري يشرح:

يستخدم OS X LF، تمامًا مثل UNIX - يستخدم MacOS 9 والإصدارات الأقدم CR بالرغم من ذلك

شهر

قد يكون هناك أيضًا اختلاف في ترميز الأحرف للأحرف الوطنية.لا يوجد "ترميز يونكس" ولكن العديد من متغيرات لينكس تستخدم UTF-8 كالتشفير الافتراضي.يستخدم نظام التشغيل Mac OS (وهو أيضًا نظام يونكس) ترميزًا خاصًا به (macroman).لست متأكدًا من الترميز الافتراضي لنظام التشغيل Windows.

ماكدويل

بالإضافة إلى اختلافات الأسطر الجديدة، يمكن أن تتسبب علامة ترتيب البايت في حدوث مشكلات إذا تم التعامل مع الملفات على أنها Unicode على نظام التشغيل Windows.

Cheekysoft

ومع ذلك، هناك مجموعة أخرى من المشكلات التي قد تواجهك يمكن أن تكون مرتبطة بتشفيرات الأحرف الفردية/متعددة البايت.إذا رأيت أحرفًا غريبة غير متوقعة (ليست في نهاية السطر)، فقد يكون هذا هو السبب.خاصة إذا رأيت مربعات مربعة أو علامات استفهام أو علامات استفهام مقلوبة أو أحرف إضافية أو أحرف معلمة غير متوقعة.

سادي

في نظام يونكس، الملفات التي تبدأ بـ .مخفية.على نظام التشغيل Windows، تكون هذه علامة لنظام الملفات والتي ربما لا يمكنك الوصول إليها بسهولة.قد يؤدي هذا إلى ظهور الملفات التي من المفترض أن تكون مخفية الآن على الأجهزة العميلة.

تختلف أذونات الملف بين الاثنين.من المحتمل أن تجد، عندما تقوم بنسخ الملفات على نظام يونكس، أن الملفات تنتمي الآن إلى المستخدم الذي قام بالنسخ وله حقوق محدودة.ستحتاج إلى استخدام chown/chmod للتأكد من أن المستخدمين المناسبين يمكنهم الوصول إليها.

توجد أدوات للمساعدة في حل المشكلة:

pauldoo

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

Cheekysoft

كما يقترح pauldoo، أدوات مثل dos2unix يمكن أن تكون مفيدة للغاية.لاحظ أن هذه قد تكون موجودة على نظام Linux/unix الخاص بك مثل fromdos أو tofrodos، أو ربما حتى كإعادة ترميز صندوق الأدوات للأغراض العامة.

مساعدة في ترميز جافا

Cheekysoft

عند الكتابة إلى الملفات أو القراءة من الملفات (التي تتحكم فيها)، غالبًا ما يكون من المفيد تحديد التشفير المطلوب استخدامه، حيث أن معظم طرق Java تسمح بذلك.ومع ذلك، فإن التأكد أيضًا من تطابق لغة النظام يمكن أن يوفر الكثير من الألم

هل كانت مفيدة؟

المحلول

وهذا مجرد اختلاف في الملفات النصية، حيث يستخدم UNIX تغذية سطر واحدة (LF) للإشارة إلى سطر جديد، ويستخدم Windows تغذية سطر/إرجاع السطر (CRLF) ويستخدم Mac مجرد CR.

يجب ألا يكون هناك اختلاف في الملفات الثنائية (أي.سيكون ملف JPEG على جهاز يعمل بنظام Windows بايتًا للبايت مثل نفس JPEG على صندوق يونكس.)

نصائح أخرى

قد يكون هناك أيضًا اختلاف في ترميز الأحرف للأحرف الوطنية.لا يوجد "ترميز يونكس" ولكن العديد من متغيرات لينكس تستخدم UTF-8 كالتشفير الافتراضي.يستخدم نظام التشغيل Mac OS (وهو أيضًا نظام يونكس) ترميزًا خاصًا به (macroman).لست متأكدًا من الترميز الافتراضي لنظام التشغيل Windows.

ولكن قد يكون هذا مصدرًا آخر للمشاكل (بصرف النظر عن فواصل الأسطر المختلفة).

ما هي مشاكلك؟يمكن تصحيح المشكلات المتعلقة بفاصل الأسطر بسهولة باستخدام البرامج dos2unix أو unix2dos الموجودة على جهاز Unix

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

(بالطبع هناك العديد من الأشياء الأخرى التي تجعل ملفات يونكس وويندوز مختلفة، ولكن لا أعتقد أنك مهتم بهذه الاختلافات الأخرى في الوقت الحالي.)

بالإضافة إلى الإجابات المقدمة، قد تجد مشكلات تتعلق بأنظمة الملفات المختلفة:

  • في نظام التشغيل Unix، الملفات التي تبدأ بـ a . مخفية.على نظام التشغيل Windows، تكون هذه علامة لنظام الملفات والتي ربما لا يمكنك الوصول إليها بسهولة.قد يؤدي هذا إلى ظهور الملفات التي من المفترض أن تكون مخفية الآن على الأجهزة العميلة.

  • تختلف أذونات الملف بين الاثنين.من المحتمل أن تجد، عندما تقوم بنسخ الملفات على نظام يونكس، أن الملفات تنتمي الآن إلى المستخدم الذي قام بالنسخ وله حقوق محدودة.سوف تحتاج إلى استخدام تشاون/شمود للتأكد من أن المستخدمين المناسبين يمكنهم الوصول إليها.

بالإضافة إلى الاختلافات في الخط الجديد، فإن علامة ترتيب البايت يمكن أن يسبب مشاكل إذا تم التعامل مع الملفات على أنها Unicode على نظام التشغيل Windows.

كما يقترح pauldoo، أدوات مثل dos2unix يمكن أن تكون مفيدة للغاية.لاحظ أن هذه قد تكون موجودة على نظام Linux/Unix لديك com.fromdos أو com.tofrodos, ، أو ربما حتى كصندوق أدوات للأغراض العامة إعادة ترميز.

ومع ذلك، هناك مجموعة أخرى من المشكلات التي قد تواجهك يمكن أن تكون مرتبطة بتشفيرات الأحرف الفردية/متعددة البايت.إذا رأيت أحرفًا غريبة غير متوقعة (ليست في نهاية السطر)، فقد يكون هذا هو السبب.خاصة إذا رأيت مربعات مربعة أو علامات استفهام أو علامات استفهام مقلوبة أو أحرف إضافية أو أحرف معلمة غير متوقعة.

تشغيل الأمر لغة سيخبرك مربع *nix الخاص بك عن لغة النظام.إذا كان هذا مختلفًا عن الترميز المستخدم في الملفات النصية التي تم نقلها من جهاز يعمل بنظام Windows، فقد يتسبب هذا في بعض الأحيان في حدوث مشكلات، اعتمادًا على استخدام تلك الملفات.يمكنك استخدام قوية جدا إعادة ترميز أمر لمحاولة التحويل بين مجموعات الأحرف المختلفة بالإضافة إلى أي مشكلات في نهاية السطر. إعادة ترميز -l سيعرض لك جميع التنسيقات والترميزات التي يمكن للأداة التحويل بينها.من المحتمل أن تكون القائمة طويلة جدًا.

عند الكتابة إلى الملفات أو القراءة من الملفات (التي تتحكم فيها)، غالبًا ما يكون من المفيد تحديد التشفير المطلوب استخدامه، حيث أن معظم طرق Java تسمح بذلك.ومع ذلك، فإن التأكد أيضًا من تطابق لغة النظام يمكن أن يوفر الكثير من الألم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top