লিনাক্সে ফাইল-সিস্টেমের চরিত্রের এনকোডিং সম্পর্কে বেশ কয়েকটি প্রশ্ন


12

উইন্ডোজ ( জিবিকে এনকোডিং) এবং লিনাক্সের ( ইউটিএফ -8 এনকোডিং) মধ্যে প্রচুর ফাইল এক্সচেঞ্জের কারণে , এটি সহজেই অক্ষর এনকোডিংয়ের সমস্যার মুখোমুখি হবে যেমন:

  • জিপ / তারার ফাইলগুলির নামগুলিতে উইন্ডোজ সিস্টেমে চীনা অক্ষর রয়েছে, এটি লিনাক্স সিস্টেমে আনজিপ / আনটার করে দিন।
  • স্থানান্তরিত লিগ্যাসি জাভা ওয়েব অ্যাপ্লিকেশন চালান (উইন্ডোজ সিস্টেমে ডিজাইন করা হয়েছে, জেএসপিতে জিবিকে এনকোডিং ব্যবহার করে) যা জিবিকে-এনকোডিং-নামক ফাইলগুলি ডিস্কে লেখেন।
  • ftp উইন্ডোজ এফটিপি সার্ভার এবং লিনাক্স ক্লায়েন্টের মধ্যে জিবিকে-এনকোডিং-নামক ফাইলগুলি পেতে / রাখুন।
  • লিনাক্সে LANG পরিবেশ পরিবর্তন করুন।

পূর্বের উল্লিখিত সাধারণ সমস্যাগুলি হ'ল ফাইল লোকেটিং / নামকরণ। গুগল করার পরে, আমি লিনাক্সে ইউনিকোড ব্যবহার করে একটি নিবন্ধ পেয়েছি http://www.linux.com/archive/feed/39912 , এতে বলা হয়েছে:

অপারেটিং সিস্টেম এবং অনেকগুলি ইউটিলিটি ফাইলের নামের বাইটগুলি কোন চরিত্রের প্রতিনিধিত্ব করে তা বুঝতে পারে না।

সুতরাং, বিভিন্ন এনকোডিং সহ 2 中文 .txt ফাইল থাকা সম্ভব:

[root@fedora test]# ls
????  中文
[root@fedora test]# ls | iconv -f GBK
中文
涓iconv: illegal input sequence at position 7
[root@fedora test]# ls 中文 && ls $'\xd6\xd0\xce\xc4'|iconv -f gbk
中文
中文

প্রশ্নাবলী:

  1. ল্যাং / এলসি_এল পরিবেশের নির্বিশেষে ফাইলের নাম সংরক্ষণের জন্য লিনাক্স ফাইল সিস্টেমের কনফিগার করা স্থির অক্ষর এনকোডিং (যেমন এনটিএফএস অভ্যন্তরীণভাবে ইউটিএফ -16 ব্যবহার করে) ব্যবহার করা সম্ভব ?
  2. অথবা, আমি যা বলতে চাই তা হ'ল: $'\xe4\xb8\xad\xe6\x96\x87.txt'zh_CN.UTF-8 পরিবেশে ফাইলের নাম 中文 .txt ( $'\xd6\xd0\xce\xc4.txt') এবং zh_CN.GBK পরিবেশে ফাইলের নাম 中文 .txt ( ) একই ফাইলকে উল্লেখ করা সম্ভব ?
  3. যদি এটি কনফিগারযোগ্য নয়, তবে ফাইল-সিস্টেম এবং বর্তমান পরিবেশের মধ্যে অক্ষর এনকোডিং অনুবাদ করার জন্য কার্নেলটি প্যাচ করা সম্ভব (কেবল একটি প্রশ্ন, প্রয়োগের অনুরোধ নয়)? এবং এটি সম্ভব হলে কতটা পারফরম্যান্স কন কনফার্ম হয়?

আপনি সাইগউইন ১.7 ব্যবহার করে উইন্ডোজ দিক থেকে সমস্যাটি মোকাবেলা করতে পারেন যা ফাইল সিস্টেমের ইউটিএফ -১ 16 এনকোডিংয়ের মধ্যে স্বয়ংক্রিয়ভাবে অনুবাদ হয় এবং স্থানীয় সেটিংসে যে কোনও এনকোডিং নির্দিষ্ট করা হয়েছে। এটি ইউটিএফ -8-এর ডিফল্ট, সুতরাং উদাহরণস্বরূপ সাইগউইন তার ফাইলটি নামগুলি ইউটিএফ -8 হিসাবে এনকোড করে।
ak2

@ আক 2 ধন্যবাদ, সাইগউইন সত্যিই ভাল, আমি বহু বছর ধরে এটি ব্যবহার করে আসছি। টার / জিপ কেস কেবল একটি উদাহরণ, বাস্তব পরিবেশে, জিপ / টার ফাইলগুলি অন্যরা তৈরি করতে পারে (যেমন ইন্টারনেট থেকে কোনও ফাইল ডাউনলোড করুন)।
লিউইয়ান 研

উত্তর:


8

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

১. ল্যাং / এলসি_এল পরিবেশ নির্বিশেষে ফাইলের নাম সংরক্ষণের জন্য লিনাক্স ফাইল সিস্টেমের স্থির অক্ষর এনকোডিং ব্যবহার করা কনফিগার করা সম্ভব?

না, এটি সম্ভব নয়: আপনি আপনার প্রশ্নে যেমন উল্লেখ করেছেন, একটি ইউনিক্স ফাইলের নাম বাইটের অনুক্রম; কার্নেল এনকোডিং সম্পর্কে কিছুই জানে না, যা সম্পূর্ণরূপে ব্যবহারকারী-স্থান (যেমন, অ্যাপ্লিকেশন-স্তর) ধারণা।

অন্য কথায়, কার্নেল LANG/ সম্পর্কে কিছুই জানে না LC_*, সুতরাং এটি অনুবাদ করতে পারে না।

২. বিভিন্ন ফাইলের নাম একই ফাইলকে উল্লেখ করা কি সম্ভব?

একই ফাইলটিকে উল্লেখ করে আপনার একাধিক ডিরেক্টরি এন্ট্রি থাকতে পারে; আপনি এটি হার্ড লিঙ্ক বা প্রতীকী লিঙ্কগুলির মাধ্যমে করতে পারেন ।

তবে সচেতন থাকুন যে ফাইলের নামগুলি বর্তমান এনকোডিংয়ে বৈধ নয় (যেমন, আপনি যখন কোনও ইউটিএফ -8 লোকালে কাজ করছেন তখন আপনার জিবিকে চরিত্রের স্ট্রিং) খারাপভাবে প্রদর্শিত হবে, যদি তা না হয়।

৩. ফাইল-সিস্টেম এবং বর্তমান পরিবেশের মধ্যে অক্ষর এনকোডিং অনুবাদ করতে কার্নেলটি প্যাচ করা সম্ভব?

এটি করার জন্য আপনি কার্নেলটি প্যাচ করতে পারবেন না (দেখুন ১) এবং কার্নেল থেকে কোনও ফাইলের নাম পড়লে তাদের বর্তমান এনকোডিংয়ে ফিরে রূপান্তর করুন।

একটি সহজ পদ্ধতির FUSE এর সাথে একটি ওভারলে ফাইল সিস্টেম লিখতে পারে , যে কোনও ফাইল সিস্টেমের অনুরোধটিকে ইউটিএফ -8 এ / থেকে ফাইলের নাম রূপান্তর করার পরে অন্য স্থানে পুনর্নির্দেশ করে। আদর্শভাবে আপনি এই ফাইল সিস্টেমটি মাউন্ট করতে পারতেন ~/transএবং যখন কোনও অ্যাক্সেস হয়ে যায় ~/trans/a/GBK/encoded/pathতখন FUSE ফাইল সিস্টেমটি সত্যই অ্যাক্সেস করে /a/UTF-8/encoded/path

যাইহোক, এই পদ্ধতির সাথে সমস্যাটি হ'ল: আপনার ফাইল সিস্টেমটিতে ইতিমধ্যে বিদ্যমান ফাইলগুলি এবং আপনি ইউটিএফ -8 এনকোডড নন এমন ফাইলগুলি আপনি কী করবেন? আপনি কেবল এগুলিকে অপরিকল্পিতভাবে পাস করতে পারবেন না, কারণ তখন আপনি কীভাবে তাদের রূপান্তর করবেন জানেন না; আপনি অবৈধ চরিত্রের অনুক্রমগুলি অনুবাদ করে সেগুলি ম্যাঙ্গেল করতে পারবেন না ?কারণ এটি দ্বন্দ্ব তৈরি করতে পারে ...


4
এ জাতীয় ওভারলে ফাইল সিস্টেম বিদ্যমান: কনভমভিএফএস
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

1

আপনি যা করতে পারেন তা হ'ল সমর্থিত লোকেলের পরিমাণ কেবলমাত্র ইউটিএফ -8 লোকেলের মধ্যে সীমাবদ্ধ।

http://www.fifi.org/cgi-bin/man2html/usr/share/man/man5/locale.gen.5


2
ব্যক্তিগতভাবে, আমি আশা করি বিশ্বে কেবলমাত্র 1 টি চরসেট এনকোডিং (ইউটিএফ -8) রয়েছে, তবে এখনও উত্তরাধিকারের প্রয়োগ চলছে এবং উইন্ডোজ এবং লিনাক্সের মধ্যে আন্তঃব্যবহারযোগ্যতা অর্জন করতে হবে, বেশিরভাগ লোককে এই দুঃস্বপ্নের মুখোমুখি হতে হবে।
লিউইয়ান 刘
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.