কোন ফাইলটিতে কোন এনকোডিং ব্যবহৃত হচ্ছে তা আমি কীভাবে দেখতে পারি


23

ভিডিও ওমপ্লেয়ারে সাবটাইটেল ফাইল নিয়ে আমার কিছু সমস্যা ছিল। এটি সমাধান করার জন্য আমাকে উইন্ডোজ -1250 থেকে ইউটিএফ -8 এনকোডিংয়ে রূপান্তর করতে হয়েছিল। আমার প্রশ্নটি হল, আমি কীভাবে কোনও নির্দিষ্ট ফাইলের জন্য দেখতে পারি যা কোন এনকোডিংটি ব্যবহৃত হয়?


piconvএনকোডিং পরিবর্তন করতে;)
রিনজউইন্ড

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

কোনও সমস্যা নেই না :) কেবল একটি ওয়াইল্ডকার্ড ব্যবহার করুন
রিনজউইন্ড

উত্তর:


26

মূলত X এনকোডিং সহ কোনও ফাইল লেখা হয়েছিল কিনা তা আপনি স্বয়ংক্রিয়ভাবে সন্ধান করতে পারবেন না।

আপনি সহজেই যা করতে পারেন তা হ'ল একটি নির্দিষ্ট কোডেক ব্যবহার করে সম্পূর্ণ ফাইলটি কোনওভাবেই ডিকোড করা যায় (তবে প্রয়োজনীয়ভাবে সঠিক নয়) তা যাচাই করা। যদি আপনি এমন কোনও বাইটস খুঁজে পান যা প্রদত্ত এনকোডিংয়ের জন্য বৈধ নয় তবে এটি অন্যরকম কিছু হতে হবে।

সমস্যাটি হ'ল অনেক কোডেক একই রকম এবং একই "বৈধ বাইট প্যাটার্ন" থাকে, কেবল তাদের আলাদা আলাদা অক্ষর হিসাবে ব্যাখ্যা করে। উদাহরণস্বরূপ, একটি äইনকোডিংয়ের সাথে éঅন্য কোনও বা øতৃতীয়টির সাথে মিল থাকতে পারে । সঠিকভাবে মানব পাঠযোগ্য পাঠ্যগুলিতে বাইট ফলাফলগুলি ব্যাখ্যা করার জন্য কম্পিউটারটি সত্যিকারভাবে সনাক্ত করতে পারে না (যদি না আপনি যদি সকল ধরণের ভাষার জন্য অভিধান যোগ করেন এবং এটি বানান চেক সম্পাদন না করেন ...)। আপনার অবশ্যই এটি অবশ্যই জেনে রাখা উচিত যে কিছু চরিত্র সেটগুলি অন্যের সাবসেট হয়, যেমন ASCII এনকোডিং এএনএসআই পরিবার বা ইউটিএফ -8 এর মতো সাধারণভাবে ব্যবহৃত কোডেকগুলির একটি অংশ। এর অর্থ উদাহরণস্বরূপ, কোনও ইউটিএফ -8 হিসাবে সংরক্ষিত একটি পাঠ্য যাতে কেবল সহজ লাতিন অক্ষর থাকে, এটি ASCII হিসাবে সংরক্ষণ করা একই ফাইলের সমান হবে।


তবে আসুন আপনি যা করতে পারবেন না তা ব্যাখ্যা করে ফিরে আসুন আপনি আসলে যা করতে পারেন:

এএসসিআইআই / নন-এএসসিআইআই (সাধারণত ইউটিএফ -8) পাঠ্য ফাইলগুলিতে প্রাথমিক চেক করার জন্য, আপনি fileকমান্ডটি ব্যবহার করতে পারেন । যদিও এটি অনেক কোডেককে জানে না এবং এটি কেবল কোনও ফাইলের প্রথম কয়েক কেবি পরীক্ষা করে, ধরে নিয়েছে যে বাকীগুলিতে কোনও নতুন অক্ষর থাকবে না। অন্যদিকে, এটি অন্যান্য সাধারণ ফাইল প্রকারগুলি যেমন বিভিন্ন স্ক্রিপ্ট, এইচটিএমএল / এক্সএমএল ডকুমেন্টস এবং অনেক বাইনারি ডেটা ফর্ম্যাটগুলি (যা পাঠ্য ফাইলগুলির তুলনা করার জন্য সমস্ত উদ্বেগজনক) স্বীকৃতি দেয় এবং এটি অতিরিক্ত তথ্য মুদ্রণ করতে পারে যেখানে খুব দীর্ঘ লাইন আছে বা কি ধরণের নিউলাইন সিকোয়েন্স (যেমন ইউনিক্স: এলএফ, উইন্ডোজ: সিআর + এলএফ) ব্যবহৃত হয়।

$ cat ascii.txt 
I am an ASCII file.
Just text and numb3rs and simple punctuation...

$ cat utf8.txt 
I am a Unicode file.
Special characters like Ω€®Ŧ¥↑ıØÞöäüß¡!

$ file ascii.txt utf8.txt 
ascii.txt: ASCII text
utf8.txt:  UTF-8 Unicode text

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


এএনএসআই আসলে কোনও চরিত্রের এনকোডিংয়ের নাম নয়। সম্ভবত আপনি এএনএসআই এস্কেপ কোডের কথা ভাবছেন, যা ASCII অক্ষর এনকোডিং দ্বারা প্রকাশ করা যেতে পারে।
ক্যাস্পারড

@ ক্যাস্পার্ড সম্ভবত তিনি আইএসও 8859 বা উইন্ডো কোড পৃষ্ঠা পরিবারের একটিতে উল্লেখ করছেন। উত্তর আমেরিকার উইন্ডোজ বিকাশকারীদের জন্য, এএনএসআই এনকোডিংটির অর্থ প্রায়শই উইন্ডোজ 1252 এনকোডিং historicalতিহাসিক কারণে রয়েছে।
ব্যবহারকারী 1937198

হ্যাঁ, ভাল, এএনএসআই মূলত ASCII (কোড 0-127) প্লাস একটি লোকেল-নির্দিষ্ট কোডেপ (কোড 128-255)। সুতরাং আপনি ঠিক বলেছেন ...
বাইট কমান্ডার


12

নামের একটি প্রোগ্রাম এটি fileকরতে পারে। উদাহরণ:

$ echo aaa >> FILE
$ file FILE
FILE: ASCII text, with CRLF, LF line terminators
$ echo öäü >> FILE
$ file FILE
FILE: UTF-8 Unicode text, with CRLF, LF line terminators

আপনি যদি এটি দেখতে কিভাবে আগ্রহী হন src/encoding.c


2
এটি অনুমান করতে পারে , যাইহোক।
26:30

2
fileঅনুমান করে এবং প্রায়শই এটি খুব ভাল হয় না। উদাহরণস্বরূপ, আমার পরীক্ষায়, এটি ম্যাক্রোম্যান এবং সিপি-1252 দুটিকেই আইএসও -8859 হিসাবে চিহ্নিত করেছে, যার ফলে "š" এবং "ß" স্ক্র্যাম্বল হয়েছিল।
চিহ্নিত করুন

দুর্দান্ত 👌! আমার পুরানো .sqlফাইলটির সঠিক এনকোডিং খুঁজে পেতে কয়েক ঘন্টা ব্যয় করেছেন এবং fileআমার কাছে দেখিয়েছেন যে এটি সত্যিই একটি gzipসংকোচিত ফাইল!
আমিররেজা নাসিরি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.