কমান্ড বা সরঞ্জাম দিয়ে কীভাবে আমি একটি ডিরেক্টরিতে ফাইলগুলিকে তাদের এনকোডিংয়ের জন্য (যেমন এএনএসআই-> ইউটিএফ -8) ব্যাচ-রূপান্তর করতে পারি?
একক ফাইলের জন্য একটি সম্পাদক সাহায্য করে, তবে কীভাবে ভর ফাইল কাজ করবেন?
কমান্ড বা সরঞ্জাম দিয়ে কীভাবে আমি একটি ডিরেক্টরিতে ফাইলগুলিকে তাদের এনকোডিংয়ের জন্য (যেমন এএনএসআই-> ইউটিএফ -8) ব্যাচ-রূপান্তর করতে পারি?
একক ফাইলের জন্য একটি সম্পাদক সাহায্য করে, তবে কীভাবে ভর ফাইল কাজ করবেন?
উত্তর:
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 ।
iconv
তারা যদি এই আকারটি অতিক্রম করে তবে 32,768 বাইটে ফাইলগুলি কেটে যাবে বলে মনে হচ্ছে। তিনি যে ফাইলটি থেকে পড়ার চেষ্টা করছেন
সঙ্গে 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
}
নিউলাইনগুলিতে উইকিপিডিয়া পৃষ্ঠাতে রূপান্তর ইউটিলিটিগুলির একটি বিভাগ রয়েছে ।
উইন্ডোজ জাহাজের সাথে শুধুমাত্র সরঞ্জামগুলি ব্যবহার করে রূপান্তর করার জন্য এটি আপনার সেরা বাজি বলে মনে হচ্ছে:
TYPE unix_file | FIND "" /V > dos_file
ইউটিএফসিস্ট হ'ল উইন্ডোজের একটি ইউনিকোড রূপান্তরকারী যা ব্যাচ মোড সমর্থন করে। আমি অর্থ প্রদান করা সংস্করণটি ব্যবহার করছি এবং এটিতে বেশ স্বাচ্ছন্দ্য বোধ করছি।
ইউটিএফসিএস্ট হ'ল একটি ইউনিকোড রূপান্তরকারী যা আপনাকে মাউসের এক ক্লিকেই সমস্ত পাঠ্য ফাইলকে ইউটিএফ এনকোডিংগুলিতে রূপান্তর করতে দেয়। মূল ফাইলগুলির ডিরেক্টরি কাঠামো বজায় রেখে আপনি এটি ইউটিএফ -8, ইউটিএফ -16 এবং ইউটিএফ -32 সহ ইউটিএফ এনকোডিংগুলিতে পাঠ্য ফাইলগুলির পূর্ণ ডিরেক্টরিকে একটি আউটপুট ডিরেক্টরিতে রূপান্তর করতে ব্যবহার করতে পারেন। আপনার পাঠ্য ফাইলটির আলাদা এক্সটেনশন রয়েছে কিনা তা বিবেচ্য নয়, ইউটিএফসিএস্ট স্বয়ংক্রিয়ভাবে পাঠ্য ফাইলগুলি সনাক্ত করতে এবং সেগুলিকে রূপান্তর করতে পারে।
সমস্ত মিলে যাওয়া পাঠ্য ফাইলগুলির অক্ষর এনকোডিংটি স্বয়ংক্রিয়ভাবে সনাক্ত হয়ে যায় এবং সমস্ত মিলে যাওয়া পাঠ্য ফাইলগুলি 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
গৌরব জন্য এখানে ক্লিক করুন ।
iconv -f original_charset -t utf-8 originalfile > newfile
লুপের জন্য উপরের কমান্ডটি চালান।
এই পাইথন স্ক্রিপ্টটি ব্যবহার করুন: https://github.com/goerz/convert_encoding.py এটি যে কোনও প্ল্যাটফর্মে কাজ করে। পাইথন 2.7 প্রয়োজন।
নেই dos2unix
UNIX উপর।
উইন্ডোজের জন্য অনুরূপ অন্য একটি সরঞ্জাম ছিল ( এখানে অন্য একটি রেফ )।
আমি কীভাবে ইউনিক্স এবং উইন্ডোজ পাঠ্য ফাইলগুলির মধ্যে রূপান্তর করব? আরও কিছু কৌশল আছে
dos2unix
লাইন ব্রেকগুলি রূপান্তর করতে দরকারী , তবে ওপি অক্ষর এনকোডিংগুলিকে রূপান্তর করতে চাইছে।
আপনি এনকোডিংমাস্টার ব্যবহার করতে পারেন । এটি বিনামূল্যে, এটিতে একটি উইন্ডোজ, লিনাক্স এবং ম্যাক ওএস এক্স সংস্করণ রয়েছে এবং এটি খুব ভাল কাজ করে good
আমার ব্যবহারের ক্ষেত্রে, আমাকে স্বয়ংক্রিয় ইনপুট এনকোডিং সনাক্তকরণের প্রয়োজন ছিল এবং 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' -- {} \;