লিনাক্সের ফাইল নাম এবং পাথের জন্য কোন চরসেট এনকোডিং ব্যবহৃত হয়?


45

এটি কি কোন ফাইল সিস্টেমটি ব্যবহার করে তার উপর নির্ভর করে? উদাহরণস্বরূপ, ext2 / ext3 / ext4 কিন্তু এছাড়াও যখন আমি আইএসও 9660 এর সাথে সেই "জোলিয়েট" সিডি-রমগুলির মধ্যে একটি sertোকি তখন কী ঘটে? আমি শুনেছি যে পসিক্সে ফাইলের নামগুলির অক্ষর এনকোডিংয়ের জন্য কিছু ধরণের স্পেক রয়েছে?

মূলত, আমি যদি অবাক করে থাকি যে আমি যদি কোনও ইউটিএফ -8 এনকোডযুক্ত ফাইলের নাম পেয়ে যাই তবে লিনাক্সের আই / ও এপিআই-এ কোনও ফাইল পাস করার আগে আমার কী প্রসেসিং / কভারেজ করা উচিত?


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

এইচএফএস + এরও প্রয়োজন যে নামগুলি পচানো উচিত যা লিনাক্সের প্রাকপম্পোজড ব্যবহারের প্রবণতা নিয়ে ভাল খেলেন না। web.archive.org/web/20080518105836/http://developer.apple.com/…
ব্যবহারকারী 12439

উত্তর:


49

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

বিশেষত, গ্লিব (Gtk + অ্যাপ্লিকেশন দ্বারা ব্যবহৃত) ধরে নেওয়া হয় যে সমস্ত ফাইলের নাম ইউটিএফ -8 এনকোডযুক্ত, ব্যবহারকারীর লোকেশন নির্বিশেষে । এটি পরিবেশ ভেরিয়েবল G_FILENAME_ENCODING এবং G_BROKEN_FILENAMES দিয়ে ওভাররাইড করা হতে পারে ।

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

আধুনিক লিনাক্স বিতরণগুলি এমনভাবে সেট আপ করা হয়েছে যে সমস্ত ব্যবহারকারীরা ইউটিএফ -8 লোকেল ব্যবহার করছে এবং বিদেশী ফাইল সিস্টেমের মাউন্টগুলিতে পাথগুলি ইউটিএফ -8 এ অনুবাদ করা হয়, সুতরাং কৌশলগুলির মধ্যে এই পার্থক্যের কোনও প্রভাব নেই। তবে, আপনি যদি সত্যিই নিরাপদ থাকতে চান, তবে আপনি "এনএলএল-টার্মিনেটেড, '/' - বাইটের সীমাবদ্ধ ক্রম" এর বাইরে ফাইল নামগুলি সম্পর্কে কোনও কাঠামো ধরে নিতে পারবেন না।

(এছাড়াও দ্রষ্টব্য: প্রক্রিয়া অনুসারে লোকেল পৃথক হতে পারে same একই ব্যবহারকারী দ্বারা চালিত দুটি পৃথক প্রক্রিয়া কেবল ভিন্ন ভিন্ন পরিবেশের ভেরিয়েবল সেট করে বিভিন্ন লোকেলে থাকতে পারে))


1
"NUL- টার্মিনেটেড, '/' - বাইটের সীমাবদ্ধ ক্রম" তবে কোনও এনকোডিং ছাড়া আপনি কীভাবে জানবেন কোন বাইটটি '/' উপস্থাপন করে?
জ্যাক

1
@ জ্যাক সর্বদা '\x2F'দেখতে কি তা নির্বিশেষে /। এসজেআইএসে উল্লেখযোগ্যভাবে আলাদা।
মুহুর্তে

1
আহ ঠিক আছে. আপনি কি সেই তথ্য দিয়ে উত্তরটি আপডেট করার বিষয়ে বিবেচনা করবেন? এটি কেবলমাত্র কারণ আমি সম্প্রতি একটি চরসেট রূপান্তর গ্রন্থাগারে কাজ করেছি, তবে "'/' - বাইটের বিস্মৃত অনুক্রম" এই বাক্যাংশটি আমার কাছে কোনও অর্থ দেয় না।
জ্যাক

সুতরাং কীভাবে এইচএক্সের এসএসএইচ সেশনে ফাইলনামের বাইটগুলি দেখতে পাবেন?
ডিমস

11

লিনাক্সের ইউনিক্স / পিক্সিক স্তরটি কোন এনকোডিংটি ব্যবহার করে তা যত্ন করে না। এটি আপনার বর্তমান এনকোডিংয়ের বাইট অনুক্রমটি যেমন রয়েছে তেমন সংরক্ষণ করে।

আমি মনে করি those মাউন্ট অপশনগুলি আপনাকে নির্দিষ্ট ফাইল সিস্টেমগুলিতে রূপান্তর করতে সহায়তা করবে যা আপনার সিস্টেমের অক্ষরে অক্ষরে সংজ্ঞা দেয়। (সিডিআরএম, এনটিএফএস এবং এফএটি ভেরিয়েন্টগুলি কিছু ইউনিকোড ভেরিয়েন্ট ব্যবহার করে)।

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


ঠিক আছে, তাহলে আমার সম্ভবত ব্যবহারকারী বর্তমানে কোন স্থানীয় লোকেল ব্যবহার করছে তা যাচাই করে নতুন ফাইলের জন্য সেটিকে রূপান্তর করতে হবে যাতে সে ফাইলটি নটিলাসে সঠিকভাবে দেখতে পাবে ইত্যাদি বর্তমান ব্যবহারকারীর জন্য বর্তমান ফাইলের নামটি কীভাবে বলতে পারি?
মার্টিন

1
@martin এটি এমনকি এত সহজ নয় ... বিভিন্ন প্রসেস বিভিন্ন এনকোডিং, env ভেরিয়েবল এবং ভাষা এটা লেখা ছিল তার উপর নির্ভর করে ব্যবহার করতে পারেন।
বেসিক

5

এটি আপনি কীভাবে ফাইল সিস্টেমটি মাউন্ট করবেন তার উপর নির্ভর করে, কেবলমাত্র বিভিন্ন ফাইল সিস্টেমের জন্য মাউন্ট অপশনগুলি একবার দেখুন man mount। উদাহরণস্বরূপ iso9660, vfatএবং fatআছে iocharsetএবং utf8বিকল্পগুলি।


সুতরাং আমি যদি এটি ইউটিএফ 8 ব্যবহার করে মাউন্ট করি তবে আমারও কি খোলা () সিস্কেলটিতে ইউটিএফ 8 পাস করা উচিত?
মার্টিন

এছাড়াও আমি এটি খুঁজে পেয়েছি ( গ্রন্থাগার.gnome.org/devel/glib/unstable/… ) যা মনে করে যে ফাইলনামগুলির চরসেট এনকোডিংটি কী লোকেল সেট করা আছে তার উপর নির্ভরশীল?
মার্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.