it-swarm.asia

دفعة تحويل الملفات لترميز

كيف يمكنني تحويل الملفات دفعة في دليل لترميزها (مثل ANSI-> UTF-8) باستخدام أمر أو أداة؟

بالنسبة للملفات الفردية ، يساعد المحرر ، ولكن كيف تعمل الملفات الجماعية؟

46
desolat

يوفر Cygwin أو GnuWin32 أدوات Unix مثل iconv و dos2unixunix2dos) . ضمن Unix/Linux/Cygwin ، ستحتاج إلى استخدام "windows-1252" كتشفير بدلاً من ANSI (انظر أدناه). (ما لم تعلم أن نظامك يستخدم مخطط الشفرة بخلاف 1252 كـ مخطط الشفرة الافتراضي الخاص به ، وفي هذه الحالة ستحتاج إلى إخبار iconv مخطط الشفرة الصحيح للترجمة منه.)

تحويل من واحد (-f) إلى الآخر (-t) باستخدام:

$ iconv -f windows-1252 -t utf-8 infile > outfile

أو في شكل Find-all-and-conquer:

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 {} \> {} \;

بدلا من ذلك:

## this will clobber the original files!
$ find . -name '*.txt' -exec iconv --verbose -f windows-1252 -t utf-8 -o {} {} \;

تم طرح هذا السؤال عدة مرات على هذا الموقع ، لذلك إليك بعض المعلومات الإضافية حول "ANSI". في إجابة سؤال ذي صلة ، يذكر CesarB :

هناك العديد من الترميزات التي تسمى "ANSI" في نظام التشغيل Windows. في الواقع ، ANSI هو تسمية خاطئة . iconv لا يوجد لديه وسيلة للتخمين الذي تريده.

ترميز ANSI هو الترميز الذي تستخدمه الدالات "A" في واجهة برمجة تطبيقات Windows (تستخدم الدالات "W" UTF-16). يعتمد الترميز الذي يتوافق معه عادةً على لغة نظام Windows. الأكثر شيوعًا هو CP 1252 (المعروف أيضًا باسم Windows-1252). لذلك ، عندما يقول المحرر الخاص بك لـ ANSI ، فإن هذا يعني "مهما كانت وظائف API المستخدمة كترميز ANSI افتراضيًا" ، وهو الترميز الافتراضي بدون Unicode المستخدم في نظامك (وبالتالي عادةً ما يستخدم للملفات النصية).

تعطي الصفحة التي يرتبط بها هذه الحكاية التاريخية (المقتبسة من Microsoft PDF ) في أصول CP 1252 و ISO-8859-1 ، آخر الترميز المستخدمة:

[...] يأتي هذا من حقيقة أن صفحة الرموز في نظام التشغيل Windows 1252 كانت تستند في الأصل إلى مسودة ANSI ، والتي أصبحت ISO قياسي 8859-1. ومع ذلك ، عند إضافة نقاط رمز إلى النطاق المخصص لرموز التحكم في معيار ISO ، صفحة الرموز في Windows 1252 وصفحات رمز Windows التالية بناءً على سلسلة ISO 8859-x المنحرفة عن ISO. حتى يومنا هذا ، ليس من غير المألوف جعل مجتمع التطوير ، داخل وخارج Microsoft ، يخلط بين صفحة الرموز 8859-1 ونظام التشغيل Windows 1252 ، وكذلك انظر "ANSI" أو "A" يستخدم للدلالة على دعم صفحة كود Windows .

36
quack quixote

مع powershell يمكنك القيام بشيء مثل هذا:

%  get-content IN.txt | out-file -encoding ENC -filepath OUT.txt

بينما ENC شيء مثل يونيكود ، أسكي ، utf8 ، utf32. الخروج "مساعدة خارج الملف".

لتحويل جميع ملفات * .txt في الدليل إلى utf8 ، قم بعمل مثل هذا:

% foreach($i in ls -name DIR/*.txt) { \
       get-content DIR/$i | \
       out-file -encoding utf8 -filepath DIR2/$i \
  }

مما يخلق نسخة محولة من كل ملف .txt في DIR2.

تحرير: لاستبدال الملفات في جميع الدلائل الفرعية استخدم:

% foreach($i in ls -recurse -filter "*.Java") {
    $temp = get-content $i.fullname
    out-file -filepath $i.fullname -inputobject $temp -encoding utf8 -force
}
28
akira

تحتوي صفحة ويكيبيديا على الأسطر الجديدة على قسم أدوات مساعدة للتحويل .

يبدو هذا أفضل رهان للتحويل باستخدام الأدوات التي يأتي بها Windows فقط مع:

TYPE unix_file | FIND "" /V > dos_file
6
nagul

UTFCast هو محول Unicode لنظام التشغيل Windows يدعم وضع الدُفعات. أنا أستخدم النسخة المدفوعة ، وأنا مرتاح جدًا لها.

UTFCast هو محول Unicode يتيح لك دفعة تحويل جميع الملفات النصية إلى ترميزات UTF بنقرة واحدة من الماوس. يمكنك استخدامه لتحويل دليل مليء بالملفات النصية إلى ترميزات UTF بما في ذلك UTF-8 و UTF-16 و UTF-32 إلى دليل إخراج ، مع الحفاظ على بنية دليل الملفات الأصلية. لا يهم إذا كان الملف النصي الخاص بك له امتداد مختلف ، يمكن لـ UTFCast اكتشاف الملفات النصية وتحويلها تلقائيًا.

3
Tiler

Oneliner باستخدام تجد ، مع الكشف التلقائي

يتم اكتشاف ترميز الأحرف لجميع الملفات النصية المطابقة تلقائيًا ويتم تحويل جميع الملفات النصية المتطابقة إلى ترميز utf-8:

$ find . -type f -iname *.txt -exec sh -c 'iconv -f $(file -bi "$1" |sed -e "s/.*[ ]charset=//") -t utf-8 -o converted "$1" && mv converted "$1"' -- {} \;

لتنفيذ هذه الخطوات ، يتم استخدام Shell sh الفرعي مع -exec ، وتشغيل سطر واحد مع علامة -c ، وتمرير اسم الملف كوسيطة موضعية "$1" مع -- {}. في ما بينهما ، تتم تسمية ملف الإخراج utf-8 مؤقتًا converted.

يعد الأمر find مفيدًا جدًا لأتمتة إدارة الملفات هذه.

انقر هنا للحصول على المزيد find وافر .

2
Serge Stroobandt

iconv -f original_charset -t utf-8 originalfile > newfile

قم بتشغيل الأمر أعلاه في حلقة.

1
Aneesh Garg

يمكنك استخدام EncodingMaster . إنه مجاني ، ويحتوي على إصدار Windows و Linux و Mac OS X ويعمل بشكل جيد بالفعل.

0
Francisco Vera

في حالة الاستخدام الخاصة بي ، كنت بحاجة إلى الكشف التلقائي عن تشفير الإدخال ، وكان هناك الكثير من الملفات التي تحتوي على ترميز Windows-1250 ، والتي file -bi <FILE> بإرجاع الأمر charset=unknown-8bit لها. هذه المعلمة غير صالحة لـ iconv.

لقد حصلت على أفضل النتائج مع enca .

تحويل جميع الملفات ذات امتداد النص إلى utf-8

find . -type f -iname *.txt -exec sh -c 'echo "$1" && enca "$1" -x utf-8' -- {} \;
0
Bedla

استخدم برنامج Python النصي هذا: https://github.com/goerz/convert_encoding.py إنه يعمل على أي نظام أساسي. يتطلب بيثون 2.7.

0
kinORnirvana

هناك dos2unix على نظام يونكس.
كان هناك أداة أخرى مماثلة لنظام التشغيل Windows ( مرجع آخر هنا ).

كيف أقوم بالتحويل بين الملفات النصية يونكس وويندوز؟ لديه بعض الحيل

0
nik