বিভিন্ন এনকোডিংয়ে ফাইলের নাম কীভাবে পরিবর্তন করবেন?


8

মাউন্ট করা হার্ড ড্রাইভে আমার কাছে 3 ধরণের file nameএনকোডিং রয়েছে reiserfs: সিপি 1251, কেওআই -8, ইউটিএফ -8 এবং এএসসিআইআই। আমার অবশ্যই সমস্ত এনকোডিংগুলি পুনরাবৃত্তভাবে ইউটিএফ -8 এ রূপান্তর করতে হবে। এমন কোনও ইউটিলিটি রয়েছে, যা উত্স এনকোডিং সনাক্ত করে এটি ইউটিএফ -8 এ রূপান্তর করবে বা পাইথন স্ক্রিপ্টটি লিখতে হবে?


সাধারণ ক্ষেত্রে, নাম এনকোডিংটি স্বয়ংক্রিয়ভাবে "অনুমান" করা সম্ভব নয় (উদাহরণস্বরূপ, বাইট সিকোয়েন্সগুলির বেশিরভাগটি বৈধ KOI-8 এবং CP1251 (তবে পৃথক। ফাইলের নাম))। নামের এনকোডিংটি জানার জন্য আপনার কাছে কোনও অতিরিক্ত ক্লু রয়েছে?

অন্য কোনও সূত্র নেই :(
পাবলো

আপনার কি ছোট হাতের এবং বড় হাতের ফাইলের দুটি নাম আছে?

হ্যাঁ, আমার দুটি ছোট হাতের অক্ষর এবং (সমস্ত) বড় হাতের ফাইলের নাম রয়েছে।
পাবলো

প্রয়োজনে কেউ? চেক আউট detox। এটি আইএসও -8859-1 এবং ইউটিএফ -8 এর মধ্যে ব্যবহার করে আমার পক্ষে কাজ করেছে-s iso8859_1-only
আলউইন কেসলার

উত্তর:


12

কনফ্যাম, একটি সিএলআই সরঞ্জাম ব্যবহার করুন যা ফাইলের নামটিকে বিভিন্ন এনকোডিংয়ের মধ্যে রূপান্তর করে। -fএই এনকোডিংগুলি ( -t) থেকে ( ) ইউটিএফ -8 এ রূপান্তর করতে নিম্নলিখিতটি করুন:

convmv -f CP1251 -t UTF-8 inputfile
convmv -f KOI-8  -t UTF-8 inputfile
convmv -f ASCII  -t UTF-8 inputfile

তদতিরিক্ত, আপনি যদি ফাইল সামগ্রীকে রূপান্তর করতে চান, ব্যবহার করুন iconv, ফাইলের সামগ্রীকে বিভিন্ন এনকোডিংগুলিতে রূপান্তর করতে LI -fএই এনকোডিংগুলি ( -t) থেকে ( ) ইউটিএফ -8 এ রূপান্তর করতে নিম্নলিখিতটি করুন:

iconv -f CP1251 -t UTF-8 inputfile > outputfile
iconv -f KOI-8  -t UTF-8 inputfile > outputfile
iconv -f ASCII  -t UTF-8 inputfile > outputfile

1
এটি আমার কাছে রূপান্তর করতে হবে এমন ফাইল সামগ্রী নয়, তবে নিজের নাম ফাইল করুন
পাবলো

ঠিক আছে. আপনি কনফ্যাম চেষ্টা করেছেন?
মার্কোস ররিজ জুনিয়র

এএসসিআইআই ইতিমধ্যে ইউটিএফ -8 এর একটি সাবসেট তাই রূপান্তর করার দরকার নেই।
psusi

1

নাঃ। পুরানো কোড পৃষ্ঠা সিস্টেমে এক বিরাট ডাউনসাইড হ'ল কোনটি ব্যবহার হচ্ছে তা সনাক্ত করার কোনও উপায় নেই; আপনার অবশ্যই এটি অবশ্যই জেনে রাখা উচিত। আপনি যদি জানেন যে কোন ফাইলগুলি কোন এনকোডিং ব্যবহার করছে তবে আপনি নামগুলি রূপান্তর করতে পারেন এরকম কিছু ব্যবহার করে:

mv somefile `echo somefile | iconv -f CP1251 -t UTF-8`

ম্যানুয়ালি নামকরণের জন্য অনেকগুলি ফাইল ... আমি ভেবেছিলাম কোড কোডগুলিতে স্বতন্ত্র অক্ষর কোডের ব্যাপ্তি রয়েছে।
পাবলো

@ পাবলো, না, এটি সম্পূর্ণ পয়েন্ট: একটি 8 বিট বাইট সহ আপনার কেবলমাত্র 256 টি সম্ভাব্য অক্ষর কোড রয়েছে। ASCII অক্ষরগুলির সাধারণ সেটটি বিয়োগের পরে এবং নিয়ন্ত্রণ কোডগুলি যা 128 টি অতিরিক্ত কোডের জন্য ছেড়ে যায়, যা সমস্ত ভাষায় অক্ষরের পুরো পরিসীমা উপস্থাপন করতে যথেষ্ট নয়। প্রতিটি কোড পৃষ্ঠা ব্যবহারকারীর পক্ষে গুরুত্বপূর্ণ চরিত্রগুলি উপস্থাপন করতে সেইগুলি উপরের 128 টি কোডের নিজস্ব ব্যবহার করে। কোনটি ব্যবহার হচ্ছে তা নির্ধারণের একমাত্র উপায় হ'ল প্রতিটি সম্ভাব্য কোড পৃষ্ঠা প্রদর্শন করার চেষ্টা করা এবং এটি নামটি বোধগম্য হয়েছে কিনা তা দেখুন এবং এটি কোনও কম্পিউটার নয় এবং সিদ্ধান্ত নিন।
psusi

ঠিক আছে, অজগরটি chardetএটি কোনওভাবে সনাক্ত করছে ...
পাবলো

@ পাবলো, ঝরঝরে ... দেখে মনে হচ্ছে এটি লিখিত ভাষায় বিভিন্ন চরিত্রের বিস্তারের উপর ভিত্তি করে একটি শিক্ষিত অনুমান করে। অন্য কথায়, এটি ধরে নেওয়া হয়েছে যে মূর্খ গ্লাইফগুলির মতো নির্দিষ্ট অক্ষরগুলি বলার চেয়ে কম জনপ্রিয়, একটি উচ্চারণযুক্ত 'এ', এবং প্রতিটি কোড পৃষ্ঠাতে বর্ণগুলি ব্যাখ্যা করার চেষ্টা করে এবং সর্বাধিক কোড রয়েছে যা সর্বাধিক জনপ্রিয় চরিত্রগুলির সাথে মেলে। এটি সম্ভবত খুব সঠিক নয়, বিশেষত একটি ফাইলের নাম হিসাবে স্বল্প সংখ্যক অক্ষরের উপরে।
psusi

0

iconv@ স্প্যাসি সুজেস হিসাবে একই লুপ কিন্তু লুপ এবং যখন কার্ড সহ: একই সমাধান

অনলাইন শেল shস্ক্রিপ্টও:

for f in /path/*.txt; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done

পাইপ লাইন থেকে কার্ড কার্ড পড়ার সাথে:

echo * | for f in `read f&&echo $f`; do mv $f `echo $f | iconv -f 866 -t UTF-8`; done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.