এনকোডিংয়ের জন্য ব্যাচ-রূপান্তরকারী ফাইল


46

কমান্ড বা সরঞ্জাম দিয়ে কীভাবে আমি একটি ডিরেক্টরিতে ফাইলগুলিকে তাদের এনকোডিংয়ের জন্য (যেমন এএনএসআই-> ইউটিএফ -8) ব্যাচ-রূপান্তর করতে পারি?

একক ফাইলের জন্য একটি সম্পাদক সাহায্য করে, তবে কীভাবে ভর ফাইল কাজ করবেন?


1
সম্পর্কিত: stackoverflow.com/questions/724083/...
nagul

উত্তর:


36

Cygwin বা GnuWin32 প্রদান ইউনিক্স সরঞ্জামের মত iconvএবং dos2unix(এবং unix2dos)। ইউনিক্স / লিনাক্স / সাইগউইনের অধীনে, আপনি এএনএসআইয়ের পরিবর্তে এনকোডিং হিসাবে "উইন্ডোজ -১২২২" ব্যবহার করতে চান (নীচে দেখুন)। (যতক্ষণ না আপনি আপনার সিস্টেম যে ক্ষেত্রে আপনি বলতে হবে একটি codepage 1252 তার ডিফল্ট codepage যেমন ছাড়া অন্য ব্যবহার করছে জানেন iconv থেকে অনুবাদ করতে ডান codepage।)

এর সাথে একটি ( -f) থেকে অন্যটিতে ( ) রূপান্তর করুন -t:

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

বা একটি সন্ধানের সর্বাত্মক ও বিজয়ী ফর্মটিতে:

## 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 {} {} \;

এই সাইটে এই প্রশ্নটি অনেকবার জিজ্ঞাসা করা হয়েছে, সুতরাং "এএনএসআই" সম্পর্কে কিছু অতিরিক্ত তথ্য এখানে দেওয়া হয়েছে। সম্পর্কিত প্রশ্নের উত্তরে সিজারবি উল্লেখ করেছেন :

বেশ কয়েকটি এনকোডিং রয়েছে যা উইন্ডোজে "এএনএসআই" নামে পরিচিত। আসলে, এএনএসআই হ'ল একটি ভুল নাম । আইকনভিভি অনুমান করার কোন উপায় নেই যা আপনি চান।

এএনএসআই এনকোডিং হ'ল উইন্ডোজ এপিআইতে "A" ফাংশন দ্বারা ব্যবহৃত এনকোডিং ("ডাব্লু" ফাংশনগুলি ইউটিএফ -16 ব্যবহার করে)। এটির সাথে এনকোডিংটি সাধারণত আপনার উইন্ডোজ সিস্টেমের ভাষার উপর নির্ভর করে। সর্বাধিক সাধারণ সিপি 1252 (এটি উইন্ডোজ -১২২২ নামে পরিচিত)। সুতরাং, যখন আপনার সম্পাদক এএনএসআই বলছেন, তার অর্থ "এপিআই ফাংশনগুলি ডিফল্ট এএনএসআই এনকোডিং হিসাবে যা ব্যবহার করে" তার অর্থ, এটি আপনার সিস্টেমে ব্যবহৃত ডিফল্ট নন-ইউনিকোড এনকোডিং (এবং সাধারণত এটি পাঠ্য ফাইলগুলির জন্য ব্যবহৃত হয়)।

যে পৃষ্ঠায় তিনি লিঙ্ক করেছেন সেটি সিপি 1252 এবং আইএসও -8859-1-এর উত্স সম্পর্কে এই historicalতিহাসিক টিডবিটটি ( মাইক্রোসফ্ট পিডিএফ থেকে উদ্ধৃত ) দেয় যা অন্য ব্যবহৃত-টি ব্যবহৃত এনকোডিং:

[...] এ থেকে আসে যে উইন্ডোজ কোড পৃষ্ঠা 1252 মূলত একটি এএনএসআই খসড়ার উপর ভিত্তি করে তৈরি হয়েছিল, যা আইএসও স্ট্যান্ডার্ড 8859-1 এ পরিণত হয়েছিল। যাইহোক, আইএসও স্ট্যান্ডার্ডে নিয়ন্ত্রণ কোডের জন্য সংরক্ষিত সীমার কোড পয়েন্ট যুক্ত করার পরে, উইন্ডোজ কোড পৃষ্ঠা 1252 এবং পরবর্তী উইন্ডোজ কোড পৃষ্ঠাগুলি ISO 8859-x সিরিজের ভিত্তিতে মূলত আইএসও থেকে বিচ্যুত হয়েছিল। আজ অবধি, মাইক্রোসফ্টের অভ্যন্তরে এবং বাইরে উভয় ক্ষেত্রেই উন্নয়নের সম্প্রদায়টি 8859-1 কোড পৃষ্ঠাটি উইন্ডোজ 1252 এর সাথে বিভ্রান্ত করার পাশাপাশি উইন্ডোজ কোড পৃষ্ঠা সমর্থনটি চিহ্নিত করতে ব্যবহৃত "এএনএসআই" বা "এ" দেখুন দেখুন unc ।


4
ইনপুট এবং আউটপুট হিসাবে একই ফাইলের নাম ব্যবহার করবেন না! iconvতারা যদি এই আকারটি অতিক্রম করে তবে 32,768 বাইটে ফাইলগুলি কেটে যাবে বলে মনে হচ্ছে। তিনি যে ফাইলটি থেকে পড়ার চেষ্টা করছেন
সেটিতে

1
এফওয়াইআই এই প্রশ্নটি ওএসএক্সের সাথে ট্যাগ করা হয়েছে এবং রূপান্তরিত সমস্ত কমান্ডগুলির মধ্যে যোসোমাইট বা এল ক্যাপের মতো কাজ করে না বলে মনে হচ্ছে না। আইকনভি সংস্করণ অ্যাপল জাহাজগুলি --verbose বা -o সমর্থন করে না, এবং অন্যান্য সিনট্যাক্স পুনর্নির্দেশ stdout কোনও কারণে কাজ করে না এবং কেবল এটি নিয়মিত stdout এ প্রেরণ করে।
স্কট ম্যাকআইন্টির

28

সঙ্গে PowerShell আপনি ভালো কিছু করতে পারেন:

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

যদিও ENC ইউনিকোড, এসকিআই, ইউটিএফ 8, ইউটিএফ 32 এর মতো কিছু। চেকআউট 'ফাইল সাহায্য করুন'।

ডিরেক্টরিতে সমস্ত * .txt ফাইলকে utf8 এ রূপান্তর করতে এমন কিছু করুন:

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

যা DIR2 এ প্রতিটি .txt ফাইলের রূপান্তরিত সংস্করণ তৈরি করে।

সম্পাদনা: সমস্ত উপ-ডিরেক্টরিতে ফাইলগুলি প্রতিস্থাপন করতে ব্যবহার করুন:

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

আপনার প্রথম প্রস্তাবের মাধ্যমে এএনএসআই থেকে ইউটিএফ-তে রূপান্তর করা আমার পাঠ্য ফাইলটির পুরো সামগ্রীটি মুছে ফেলবে ...
অ্যাক্রোনোস

@ অ্যাক্রোনোস: তারপরে আপনি একটি ভুল করেছেন: ইন-ফাইলটি IN.txt, আউটফাইলটি OUT.txt ... এইভাবে আসলটি ওভাররাইট করা অসম্ভব। আপনি যদি IN.txt এবং OUT.txt এর জন্য একই ফাইলের নাম ব্যবহার করেন তবে আপনি যে ফাইলটি পড়ছেন সেগুলি অবশ্যই স্বাক্ষর করে।
আকির

পাওয়ারশেল বিওএম দিয়ে ইউটিএফ রূপান্তর করবে। খুঁজে পেতে এবং আইকনভিভ অনেক সহজ হতে পারে।
pparas

6

নিউলাইনগুলিতে উইকিপিডিয়া পৃষ্ঠাতে রূপান্তর ইউটিলিটিগুলির একটি বিভাগ রয়েছে ।

উইন্ডোজ জাহাজের সাথে শুধুমাত্র সরঞ্জামগুলি ব্যবহার করে রূপান্তর করার জন্য এটি আপনার সেরা বাজি বলে মনে হচ্ছে:

TYPE unix_file | FIND "" /V > dos_file

3

ইউটিএফসিস্ট হ'ল উইন্ডোজের একটি ইউনিকোড রূপান্তরকারী যা ব্যাচ মোড সমর্থন করে। আমি অর্থ প্রদান করা সংস্করণটি ব্যবহার করছি এবং এটিতে বেশ স্বাচ্ছন্দ্য বোধ করছি।

ইউটিএফসিএস্ট হ'ল একটি ইউনিকোড রূপান্তরকারী যা আপনাকে মাউসের এক ক্লিকেই সমস্ত পাঠ্য ফাইলকে ইউটিএফ এনকোডিংগুলিতে রূপান্তর করতে দেয়। মূল ফাইলগুলির ডিরেক্টরি কাঠামো বজায় রেখে আপনি এটি ইউটিএফ -8, ইউটিএফ -16 এবং ইউটিএফ -32 সহ ইউটিএফ এনকোডিংগুলিতে পাঠ্য ফাইলগুলির পূর্ণ ডিরেক্টরিকে একটি আউটপুট ডিরেক্টরিতে রূপান্তর করতে ব্যবহার করতে পারেন। আপনার পাঠ্য ফাইলটির আলাদা এক্সটেনশন রয়েছে কিনা তা বিবেচ্য নয়, ইউটিএফসিএস্ট স্বয়ংক্রিয়ভাবে পাঠ্য ফাইলগুলি সনাক্ত করতে এবং সেগুলিকে রূপান্তর করতে পারে।


দেখে মনে হচ্ছে তারা একই ফোল্ডারে রূপান্তর করতে পারে না, কেবল অন্য গন্তব্য ফোল্ডারে।
উওয়ে কেইম

প্রো সংস্করণ স্থান পরিবর্তন রূপান্তর করতে পারবেন। $ 20 / 3months। rotatingscrew.com/utfcast-version-compistance.aspx
শারিলহোহমান

ওহ, এক্সপ্রেস (ফ্রি) সংস্করণটি অকেজো - এটি কেবলমাত্র BOM সহ utf-8 "সনাক্ত করে"! (সবাই কি করতে পারেন যে )। কেবলমাত্র প্রো সংস্করণ যা প্রতি 3 মাসে প্রতি 3 মাসে 20 ডলারের বিনিময়ে স্বতঃ-নবায়ন করে, স্বয়ংক্রিয়ভাবে সনাক্ত করবে will অ-এন্টারপ্রাইজ ব্যবহারকারীর জন্য মূল্য খাড়া। এবং সাবধান হন যদি আপনি প্রাথমিক সংস্করণটি চেষ্টা করেন, এবং আপনার ফাইলটি ইতিমধ্যে utf-8 (বিওএম ছাড়াই) রয়েছে, তবে এই রূপান্তরকারী এটিটিকে ASCII হিসাবে সনাক্ত করবে, তারপরে (পুনরায়) এটি ইউটিএফ -8 এ "রূপান্তর" করবে, যার ফলে গিব্বারিশ হতে পারে । এক্সপ্রেস সংস্করণ চেষ্টা করার আগে যদি সচেতন হন! প্রোয়ের জন্য তাদের একটি ডেমো সংস্করণ রয়েছে যা কোনও আউটপুট দেয় না - অর্থহীন আইএমএইচও কিউজ কেনার আগে ফলাফল যাচাই করতে পারে না!
শেরিলহোমান

3

অনেলাইনার স্বয়ংক্রিয় সনাক্তকরণ সহ ফাইন্ড ব্যবহার করে

সমস্ত মিলে যাওয়া পাঠ্য ফাইলগুলির অক্ষর এনকোডিংটি স্বয়ংক্রিয়ভাবে সনাক্ত হয়ে যায় এবং সমস্ত মিলে যাওয়া পাঠ্য ফাইলগুলি 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"' -- {} \;

এই পদক্ষেপগুলি সম্পাদন করতে, একটি সাব শেলটি shব্যবহার করা হয় পতাকাটির -execসাথে ওয়ান-লাইনার চালানো -c, এবং ফাইলের নামটি অবস্থানগত আর্গুমেন্ট হিসাবে পাস করার "$1"সাথে -- {}। এর মধ্যে, utf-8আউটপুট ফাইলটি অস্থায়ীভাবে নাম দেওয়া হয়েছে converted

এই findধরনের ফাইল পরিচালন অটোমেশনের জন্য কমান্ডটি খুব কার্যকর।

আরও findগৌরব জন্য এখানে ক্লিক করুন ।




0

নেই dos2unixUNIX উপর।
উইন্ডোজের জন্য অনুরূপ অন্য একটি সরঞ্জাম ছিল ( এখানে অন্য একটি রেফ )।

আমি কীভাবে ইউনিক্স এবং উইন্ডোজ পাঠ্য ফাইলগুলির মধ্যে রূপান্তর করব? আরও কিছু কৌশল আছে


2
dos2unixলাইন ব্রেকগুলি রূপান্তর করতে দরকারী , তবে ওপি অক্ষর এনকোডিংগুলিকে রূপান্তর করতে চাইছে।
সনি সান্টোস

0

আপনি এনকোডিংমাস্টার ব্যবহার করতে পারেন । এটি বিনামূল্যে, এটিতে একটি উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স সংস্করণ রয়েছে এবং এটি খুব ভাল কাজ করে good


1
আপনার উল্লিখিত ওয়েবসাইটটি বন্ধ রয়েছে।
এটিয়েন ডেলাভেনাট

0

আমার ব্যবহারের ক্ষেত্রে, আমাকে স্বয়ংক্রিয় ইনপুট এনকোডিং সনাক্তকরণের প্রয়োজন ছিল এবং Windows-1250এনকোডিং সহ অনেকগুলি ফাইল ছিল , যার জন্য আদেশটি file -bi <FILE>ফিরে আসে charset=unknown-8bit। এটি এর জন্য বৈধ পরামিতি নয় iconv

আমি এনকা সহ সেরা ফলাফল পেয়েছি

Txt এক্সটেনশন সহ সমস্ত ফাইলকে utf-8 এ রূপান্তর করুন

find . -type f -iname *.txt -exec sh -c 'echo "$1" && enca "$1" -x utf-8' -- {} \;
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.