কোনও ফাইলের এনকোডিং কীভাবে সনাক্ত করবেন?


115

আমার ফাইল সিস্টেমে (উইন্ডোজ)) আমার কিছু পাঠ্য ফাইল রয়েছে (এটি যদি এসকিউএল স্ক্রিপ্ট ফাইল হয় তবে তা গুরুত্বপূর্ণ)।

নোটপ্যাড ++ দিয়ে খোলার পরে , "এনকোডিং" মেনুতে তাদের কিছুগুলির "ইউসিএস -2 লিটল এন্ডিয়ান" এবং কিছু "বিওএম ছাড়াই ইউটিএফ -8" এর এনকোডিং রয়েছে বলে জানা গেছে।

এখানে পার্থক্য কী? এগুলি সমস্তই পুরোপুরি বৈধ স্ক্রিপ্ট বলে মনে হচ্ছে। নোটপ্যাড ++ ছাড়া ফাইলের কী এনকোডিং রয়েছে তা আমি কীভাবে বলতে পারি?


7
ফায়ারফক্স ব্যবহার করার একটি খুব সহজ উপায় আছে। ফায়ারফক্স ব্যবহার করে আপনার ফাইলটি খুলুন, তারপরে> চরিত্রের এনকোডিং দেখুন। এখানে বিস্তারিত ।
ক্যাথরিন গ্যাসনিয়ার

হিরিস্টিক্স ব্যবহার করুন। চেকআউট encaএবং chardetপসিক্স সিস্টেমের জন্য।
জানুস ট্রয়েলসন

3
আমি মনে করি একটি বিকল্প উত্তর ট্রায়াল এবং ইআরআরআর। iconvবিশেষত এই উদ্দেশ্যে দরকারী। মূলত আপনি কোনটি কাজ করে তা দেখতে বিভিন্ন এনকোডিংয়ের মাধ্যমে দূষিত অক্ষরগুলির স্ট্রিং / পাঠকে পুনরাবৃত্তি করুন। আপনি জিতেছেন, যখন চরিত্রগুলি আর দূষিত হয় না। আমি এখানে প্রোগ্রামাগুলি উদাহরণ সহ উত্তর দিতে পছন্দ করব। তবে দুর্ভাগ্যক্রমে এটি একটি সুরক্ষিত প্রশ্ন।
ব্র্যান্ডন বার্টেলসেন

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

যদি chardetবা chardetectআপনার সিস্টেমে উপলব্ধ নয়, তাহলে আপনি আপনার প্যাকেজ ম্যানেজার মাধ্যমে প্যাকেজ ইনস্টল করতে পারেন (যেমন apt search chardet- Ubuntu / ডেবিয়ান প্যাকেজ সাধারণত বলা হয় python-chardetবা python3-chardet) অথবা মাধ্যমে পিপ সঙ্গে pip install chardet(অথবা pip install cchardetজন্য দ্রুত সি-অপ্টিমাইজ সংস্করণ)।
সিসিপিজা

উত্তর:


97

ফাইলগুলি সাধারণত একটি ফাইল শিরোলেখ দ্বারা তাদের এনকোডিং নির্দেশ করে। এখানে অনেক উদাহরণ আছে । যাইহোক, এমনকি শিরোনামটি পড়া আপনি কোনও ফাইলের এনকোডিংটি আসলে কী ব্যবহার করছেন তা কখনই নিশ্চিত হতে পারবেন না

উদাহরণস্বরূপ, প্রথম তিন বাইট সহ একটি ফাইল 0xEF,0xBB,0xBFহয় সম্ভবত একটি UTF-8 এনকোড ফাইল। তবে এটি কোনও আইএসও -8859-1 ফাইল হতে পারে যা অক্ষরগুলি দিয়ে শুরু হয় । অথবা এটি পুরোপুরি একটি আলাদা ফাইল টাইপ হতে পারে।

নোটপ্যাড ++ কোনও ফাইলকে কী এনকোডিং ব্যবহার করছে তা অনুমান করার জন্য সর্বোত্তম চেষ্টা করে এবং বেশিরভাগ সময় এটি সঠিকভাবে আসে। কখনও কখনও এটি ভুল হয়ে যায় - এজন্যই সেই 'এনকোডিং' মেনু রয়েছে, তাই আপনি এটির সর্বোত্তম অনুমানকে ওভাররাইড করতে পারেন।

দুটি এনকোডিংয়ের জন্য আপনি উল্লেখ করেছেন:

  • "ইউসিএস -২ লিটল এন্ডিয়ান" ফাইলগুলি ইউটিএফ -১ files ফাইল (আমি এখানে যে তথ্য থেকে বুঝতে পারি তার উপর ভিত্তি করে ) সম্ভবত0xFF,0xFE প্রথম 2 বাইট হিসাবে শুরু করুন । আমি যা বলতে পারি তা থেকে নোটপ্যাড ++ এগুলিকে "ইউসিএস -২" হিসাবে বর্ণনা করে কারণ এটি ইউটিএফ -16 এর নির্দিষ্ট দিকগুলিকে সমর্থন করে না।
  • "বিওএমবিহীন ইউটিএফ -8" ফাইলগুলিতে কোনও শিরোনাম বাইট নেই। "বিওএম বিহীন" বিটের অর্থ এটিই।


2
কোনও বিওএম দিয়ে শুরু হওয়া কোনও ফাইল "বিএম ছাড়াই ইউটিএফ -8" হিসাবে স্বয়ংক্রিয়ভাবে সনাক্ত হবে?
মাইকেল বর্গওয়ার্ট

2
এবং যদি কোনও ফাইল 0xFF, 0xFE দিয়ে শুরু হয় তবে এটি ইউটিএস -16 হিসাবে স্বয়ংক্রিয়ভাবে সনাক্ত হওয়া উচিত, ইউসিএস -2 নয়। ইউসিএস -২ সম্ভবত অনুমান করা হয়েছে কারণ এটিতে মূলত এএসসিআইআই অক্ষর রয়েছে এবং সুতরাং প্রতিটি অন্যান্য বাইট শূন্য থাকে।
মাইকেল বর্গওয়ার্ট

2
অভিজ্ঞতার সাথে, হায়, মেটাডেটা ("শিরোনাম" )ও ভুল হতে পারে। তথ্য ধারণ করে থাকা ডাটাবেসটি দূষিত হতে পারে, বা মূল আপলোডারটি এটি ভুল হতে পারে। (এটি গত কয়েক মাসে আমাদের জন্য একটি উল্লেখযোগ্য সমস্যা হয়ে দাঁড়িয়েছে; কিছু তথ্য "ইউটিএফ -8" হিসাবে আপলোড করা হয়েছিল যদিও এটি "সত্যই আইএসও ৮৮৮৯-১ ছিল না, যেহেতু তারা সত্যই একই?!" বাহ! বিজ্ঞানীদের রাখা উচিত মেটাডেটার উত্স থেকে দূরে; তারা কেবল এটি ভুল করে ...)
ডোনাল ফেলো

1
প্রকৃতপক্ষে আমি মনে করি এটি "মজার" যে এনকোডিংয়ের সমস্যাটি এখনও 2014 সালে রয়ে গেছে কারণ বিশ্বের কোনও ফাইল "ï» ¿"দিয়ে শুরু হবে না এবং আমি যখন খুব সহজেই একটি HTML পৃষ্ঠা দেখি যা ভুল এনকোডিংয়ের সাথে লোড করা হয় তখন আমি খুব অবাক হয়। এটা সম্ভাবনার বিষয়। অন্য এনকোডিংটি অদ্ভুত অক্ষর এড়াতে পারে যদি ভুল এনকোডিংটি চয়ন করা কল্পনা করা যায় না .. এমন এনকোডিং সন্ধান করা যা অদ্ভুত অক্ষরগুলি এড়ায় তা আমার অনুমান 99,9999% ক্ষেত্রে কাজ করবে। তবে তবুও ত্রুটি রয়েছে .. এছাড়াও জায়গা বাঁচাতে ইউটিএফ 8 এর পরিবর্তে এসকিআই ব্যবহার করা খুব বিভ্রান্তিকর বার্তা .. এটি জুনিয়র বিকাশকারীদের এই ধারণাটি সম্পাদন করার বিভ্রান্তিকর ..
সত্য

18

তুমি পার না. আপনি যদি এটি করতে পারতেন তবে সেখানে "এলোমেলো গীব্রিশ" সহ এতগুলি ওয়েব সাইট বা পাঠ্য ফাইল থাকবে না। এ কারণেই সাধারণত মেটা ডেটা হিসাবে পে-লোডের সাথে এনকোডিং প্রেরণ করা হয়।

যদি এটি না হয় তবে আপনি যা কিছু করতে পারেন তা একটি "স্মার্ট অনুমান" তবে ফলাফলটি প্রায়শই অস্পষ্ট থাকে কারণ একই বাইট ক্রমটি বেশ কয়েকটি এনকোডিংগুলিতে বৈধ হতে পারে।


2
ঠিক আছে, তাহলে, উইন্ডোজ ওএস কি সেই তথ্যটি (মেটা ডেটা) আসলে কোথাও সঞ্চয় করে? রেজিস্ট্রি সম্ভবত?
মার্সেল

আপনি ভুল. এটি কোডেপেজ- এক রকম নয় not ইউনিকোড এনকোডিংটিতে অনুমান করার জন্য অ্যালগরিদম রয়েছে।
ডেড এমজি

6
@ মার্সেল: না। সে কারণেই খাঁটি এএসসিআইআই ব্যতীত যে কোনও কিছুই "টেক্সট ফাইলগুলি" এত সমস্যাযুক্ত matic
মাইকেল বর্গওয়ার্ট

ভাল নোটপ্যাড ++ এটি করতে পারে, এটি আপনাকে পাঠ্য ফাইলটি utf-8
এনকোডযুক্ত কিনা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.