কোনও ফাইল ইউটিএফ -8 আছে কিনা তা জানতে লিনাক্স কমান্ড রয়েছে?


14

জুমলা .iniফাইলগুলি ইউটিএফ -8 হিসাবে সংরক্ষণ করা দরকার।

সম্পাদনার পরে আমি নিশ্চিত না যে ফাইলগুলি ইউটিএফ -8 হয় কি না।

একটি লিনাক্স কমান্ডের মতো fileবা কয়েকটি কমান্ড রয়েছে যা জানাতে পারে যে কোনও ফাইল সত্যই ইউটিএফ -8 কিনা?


4
আপনি কোনও ফাইলের এনকোডিং বলতে পারবেন না। আপনি কেবল একটি স্মার্ট অনুমান করতে পারেন। আপনি বেশিরভাগ ক্ষেত্রে সঠিক অনুমান করতে পারেন তবে কখনও কখনও অনুমানগুলি ব্যর্থ হয়। fileস্মার্ট অনুমান করা একটি প্রোগ্রামের উদাহরণ।
মার্কো

1
@ মার্কো: তবে এটি বৈধ ইউটিএফ -8 কিনা তা যাচাই করা সম্ভব। আছে কিছু এনকোডিং যা ভুল বৈধ হল UTF-8 যেমন প্রেরণ করতে পারেন, কিন্তু এটা প্রায় না আইএসও-8859-𝒏 বা উইন্ডোজ-125𝒏 এনকোডিং / ক্যারেক্টার-সেট সঙ্গে ঘটবে।
ব্যবহারকারী1686

উত্তর:


28

আপনি নিম্নলিখিত কমান্ডের সাহায্যে ফাইল এনকোডিং নির্ধারণ করতে পারেন:

file -bi filename

3
@nicolas ম্যাকওএসের জন্য আপনি চেষ্টা করতে পারেন file -I filename(-আমি একটি মূলধন আমি)।
রিক

5
এটি কি পুরো ফাইলটি পড়ে?
ctrl-alt-delor

2
@ kojow7 utf-8 এর কোন শিরোনাম নেই। খাঁটি ASCII (কেবলমাত্র 7-বিট), utf-8 থেকে পৃথক করা যায় না (এটি এর বিন্দু, এটি একটি শিরোনাম সব ধরণের সমস্যার কারণ হতে পারে)। সুতরাং আপনার যদি এমন একটি ফাইল থাকে যা প্রথম এমবি এর জন্য ASCII হয় তবে তারপরে একটি একক ইউটিএফ -8 অক্ষর রয়েছে, তবে আপনি পুরো ফাইলটি না পড়লে আপনি জানতে পারবেন না।
ctrl-alt-delor

3
এটি উত্তর হিসাবে গ্রহণ করা উচিত নয়। 'ফাইল' কমান্ড এটি করে না; এটি ফাইলের কেবলমাত্র কিছু অংশ পড়ে এবং সর্বোত্তম অনুমান করার জন্য যাদু সংখ্যা ব্যবহার করে। উপলক্ষে 'ফাইল' আপনাকে ভুল উত্তর দিতে পারে এবং দেবে। কোনও ফাইল যদি এনকোডিং যেমন এসকিআই, আইসো -8859-1, ইউটিএফ -8 পাস করে তবে যাচাই করতে 'আইকনভি' কমান্ডটি ব্যবহার করার জন্য একটি ভাল সমাধান হ'ল।
টিম

1
আমি এটি পরীক্ষা করেছি এবং এটি ব্যর্থও হতে পারে।
টিম

9

মোর্যুটস প্যাকেজ isutf8থেকে কমান্ডটি ব্যবহার করুন ।

উত্স: কোনও ফাইল ইউটিএফ -8 এনকোডযুক্ত কিনা আপনি কীভাবে বলতে পারেন?



@ ডেভিডপোস্টিল আমি কৌতূহলী, লেখককে রেফারেন্স দেওয়ার পক্ষে কি খারাপ অভ্যাস?
পাবলো ওলমোস ডি আগুইলেরা সি।

না। তবে লিঙ্কটি আমাকে কোথায় নিয়ে যায় তা বলাই ভাল অনুশীলন। ধরুন আমি কেবল নীল লেখাটি পড়ছি। সম্পাদনার পরে, আমি কেন এবং কখন আমাকে ক্লিক করতে হবে তা বলতে পারি। আগে, আমি পারিনি। (আমি যে সম্পাদনা করেছি তা আমি নই তবে আমি
৯৯

ভাল, এবং সাথে সুন্দরভাবে কাজ করে find -type f -exec isutf8 {} +, কারণ এটি ফাইলের নামও উদ্ধৃত করে। (এবং ব্যবহারের find ... -exec ... +সাথে এটিও দ্রুত)
টমাসজ গ্যান্ডোর

2

fileকমান্ড ব্যবহার করবেন না । এটি পুরো ফাইলটি পরীক্ষা করে না এবং এটি মূলত অনুমান করে। এটি কখনও কখনও ভুল উত্তর দেয়।

কোনও ফাইল যদি ইউটিএফ -8 এনকোডিংটি এভাবে পাস করে তবে আপনি যাচাই করতে পারেন:

$ iconv -f utf8 <filename> -t utf8 -o /dev/null

শূন্যের একটি রিটার্ন কোড মানে এটি ইউটিএফ 8 পাস করে। একটি শূন্য নয় এমন রিটার্ন কোড মানে এটি বৈধ ইউটিএফ 8 নয়।

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


0

তবুও অন্য উপায়টি হ'ল recodeএটি ইউটিএফ -8 ডিকোড করার চেষ্টা করে এবং অবৈধ অক্ষরের মুখোমুখি হলে এটি একটি ত্রুটি সহ প্রস্থান করবে।

if recode utf8/..UCS < "$FILE" >/dev/null 2>&1; then
    echo "Valid utf8 : $FILE"
else
    echo "NOT valid utf8: $FILE"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.