কর্মক্ষেত্রে দেখে মনে হয় কোনও এনকোডিং-সম্পর্কিত সংযোগ, বিপর্যয় বা বিপর্যয় ছাড়াই কোনও সপ্তাহ কাটে না। সমস্যাটি সাধারণত প্রোগ্রামারদের কাছ থেকে আসে যারা মনে করেন যে তারা এনকোডিং নির্দিষ্ট না করেই কোনও "পাঠ্য" ফাইলটি নির্ভরযোগ্যভাবে প্রক্রিয়া করতে পারে। কিন্তু আপনি পারবেন না।
সুতরাং এখন থেকে ফাইলগুলির নাম *.txt
বা নাম শেষ হওয়া থেকে নিষেধ করার সিদ্ধান্ত নেওয়া হয়েছে *.text
। চিন্তাভাবনাটি হ'ল এই এক্সটেনশানগুলি এনকোডিংগুলি সম্পর্কে নৈমিত্তিক প্রোগ্রামারকে নৈমিত্তিক প্রোগ্রামারকে বিভ্রান্ত করে এবং এর ফলে সঠিকভাবে পরিচালনা করা যায় না। মোটেও কোনও এক্সটেনশান না করাই প্রায় ভাল, কারণ কমপক্ষে তখন আপনি জানেন যে আপনি কী পেয়েছেন তা আপনি জানেন না।
তবে আমরা এতদূর যেতে চাই না go পরিবর্তে আপনি এমন একটি ফাইল নাম ব্যবহার করবেন যা এনকোডিংয়ে শেষ হবে expected টেক্সট ফাইলে সুতরাং, উদাহরণস্বরূপ, এইসব ভালো কিছু হবে README.ascii
, README.latin1
, README.utf8
, ইত্যাদি
কোনও নির্দিষ্ট বর্ধনের দাবি করা ফাইলগুলির জন্য, যদি কেউ ফাইলের মধ্যেই এনকোডিং নির্দিষ্ট করতে পারে যেমন পার্ল বা পাইথন-তে, তবে আপনি এটি করতে পারেন। জাভা উত্সের মতো ফাইলগুলির জন্য যেখানে ফাইলের অভ্যন্তরীণ কোনও সুবিধা নেই, আপনি এক্সটেনশনের আগে এনকোডিং রাখবেন, যেমন SomeClass-utf8.java
।
আউটপুট জন্য, UTF-8 দৃ strongly ়ভাবে পছন্দ করা উচিত।
তবে ইনপুটটির জন্য, আমাদের কোডবেজে থাকা হাজার হাজার ফাইলকে কীভাবে মোকাবেলা করতে হবে তা খুঁজে বের করতে হবে *.txt
। আমাদের নতুন স্ট্যান্ডার্ডের সাথে ফিট করার জন্য আমরা তাদের সকলের নাম পরিবর্তন করতে চাই। তবে আমরা সম্ভবত তাদের সবাইকে চোখের জল ফেলতে পারি না। সুতরাং আমাদের দরকার এমন একটি লাইব্রেরি বা প্রোগ্রাম যা আসলে কাজ করে।
এগুলি এএসসিআইআই, আইএসও -8859-1, ইউটিএফ -8, মাইক্রোসফ্ট সিপি 1252 বা অ্যাপল ম্যাকরোম্যানে বিভিন্নভাবে রয়েছে। যদিও আমরা জানি যে আমরা কিছু ASCII কিনা তা বলতে পারি, এবং আমরা সম্ভবত কিছুটা UTF-8 কিনা তা জানার একটি ভাল পরিবর্তন করেছি, আমরা 8-বিট এনকোডিংগুলি সম্পর্কে স্টাম্পড করেছি। যেহেতু আমরা বেশিরভাগ ডেস্কটপ ম্যাক হওয়ায় একটি মিশ্র ইউনিক্স পরিবেশে (সোলারিস, লিনাক্স, ডারউইন) চালাচ্ছি, আমাদের কাছে বেশ কয়েকটি বিরক্তিকর ম্যাক্রোম্যান ফাইল রয়েছে। এবং এগুলি বিশেষত একটি সমস্যা।
কিছু সময়ের জন্য আমি প্রোগ্রামভিত্তিক কোনটি নির্ধারণের জন্য একটি উপায় সন্ধান করছি
- এএসসিআইআই
- আইএসও -8859-1
- সিপি 1252
- ম্যাক্রোম্যান
- ইউটিএফ -8
একটি ফাইল রয়েছে এবং আমি এমন কোনও প্রোগ্রাম বা লাইব্রেরি পাইনি যা বিশ্বাসযোগ্যভাবে সেই তিনটি 8-বিট এনকোডিংগুলির মধ্যে নির্ভরযোগ্যভাবে পার্থক্য করতে পারে। আমাদের কাছে সম্ভবত এক হাজারেরও বেশি ম্যাক্রোম্যান ফাইল রয়েছে, তাই আমরা যা কিছু চরসেট ডিটেক্টর ব্যবহার করি সেগুলি স্নিগ্ধ করতে সক্ষম হতে হবে। আমি যে কিছুই দেখেছি তা ট্রিক পরিচালনা করতে পারে না। আইসিইউ চরসেট ডিটেক্টর লাইব্রেরির জন্য আমার বড় আশা ছিল , তবে এটি ম্যাকরোম্যানকে পরিচালনা করতে পারে না। পার্ল এবং পাইথন উভয় ক্ষেত্রে একই ধরণের কাজ করতে আমি মডিউলগুলিও দেখেছি, কিন্তু বারবার এটি একই গল্প: ম্যাকরোমন সনাক্তকরণের জন্য কোনও সমর্থন নেই।
সুতরাং আমি যা খুঁজছি তা একটি বিদ্যমান লাইব্রেরি বা প্রোগ্রাম যা নির্ভরযোগ্যভাবে নির্ধারণ করে যে কোনও পাঁচটি এনকোডিংয়ের মধ্যে কোনটি ফাইলের মধ্যে রয়েছে pre এবং তার চেয়ে বেশি তার চেয়ে বেশি। বিশেষত এটির তিনটি বিট এনকোডিংয়ের মধ্যে পার্থক্য করতে হবে যা আমি উদ্ধৃত করেছি, বিশেষত ম্যাকরোম্যান । ফাইলগুলি 99% এরও বেশি ইংরেজি ভাষার পাঠ্য; অন্যান্য ভাষায় কয়েকটি রয়েছে তবে অনেকগুলি নয়।
যদি এটি লাইব্রেরির কোড হয় তবে আমাদের ভাষার পছন্দটি পার্ল, সি, জাভা বা পাইথন এবং সেই ক্রমে হওয়া উচিত। এটি যদি কেবল একটি প্রোগ্রাম হয় তবে এটি পুরো উত্সে আসার পরে, ইউনিক্সে চালিত হওয়া এবং সম্পূর্ণরূপে নিরবিচ্ছিন্ন হয়ে যাওয়ার পরে আমরা কোন ভাষার মধ্যে তা আসলেই যত্ন করি না।
জিলিয়ন লিগ্যাসি টেক্সট ফাইলগুলির এলোমেলোভাবে এনকোড করে অন্য কারও কি এই সমস্যা আছে? যদি তা হয় তবে আপনি কীভাবে এটি সমাধান করার চেষ্টা করেছিলেন এবং আপনি কতটা সফল? এটি আমার প্রশ্নের সর্বাধিক গুরুত্বপূর্ণ দিক, তবে আপনি যদি মনে করেন যে প্রোগ্রামাররা সেই ফাইলগুলিকে প্রকৃত এনকোডিংয়ের সাথে তাদের ফাইলের নাম (বা নামকরণ) করতে উত্সাহিত করছেন কিনা তা ভবিষ্যতে সমস্যা এড়াতে আমাদের সহায়তা করবে। কেউ কি কখনও প্রাতিষ্ঠানিক ভিত্তিতে এটি প্রয়োগের চেষ্টা করেছে, এবং যদি তা হয় তবে তা সফল হয়েছিল কি না এবং কেন?
এবং হ্যাঁ, আমি সম্পূর্ণরূপে বুঝতে পারি যে কেউ কেন সমস্যার প্রকৃতি বিবেচনা করে একটি নির্দিষ্ট উত্তরের গ্যারান্টি দিতে পারে না। এটি বিশেষত ছোট ফাইলগুলির ক্ষেত্রে, যেখানে আপনার কাছে পর্যাপ্ত ডেটা নেই। ভাগ্যক্রমে, আমাদের ফাইলগুলি খুব কমই ছোট। এলোমেলো README
ফাইল ছাড়াও বেশিরভাগগুলি 50k থেকে 250k আকারের হয় এবং অনেকগুলিই এর চেয়ে বড়। আকারে কয়েক কে-এর চেয়ে বেশি যে কোনও কিছু ইংরাজীতে থাকার গ্যারান্টিযুক্ত।
সমস্যা ডোমেনটি বায়োমেডিকাল পাঠ্য মাইনিং, তাই আমরা কখনও কখনও PubMedCentral এর ওপেন অ্যাক্সেস রিসোসিটোরির মতো সমস্ত বিস্তৃত এবং অত্যন্ত বৃহত কর্পোরার সাথে ডিল করি। বরং একটি বিশাল ফাইলটি হ'ল বায়োথেসরাস us.০, 7. 5. গিগাবাইটে। এই ফাইলটি বিশেষত বিরক্তিকর কারণ এটি প্রায় সমস্ত ইউটিএফ -8। তবে কিছু নাম্বস্কুল গিয়েছিল এবং এতে কয়েকটি লাইন আটকেছিল যা কিছু 8-বিট এনকোডিং-মাইক্রোসফ্ট সিপি 1252-এ রয়েছে, আমি বিশ্বাস করি। আপনি এটিতে ভ্রমণের আগে এটি বেশ খানিকটা সময় নেয়। :(