(এক চিমটে নুন দিয়ে এটি নিন) যতদূর আমার মনে আছে সমস্যাটি libiconv
কাজ করে works মাল্টি-বাইট এনকোডিংগুলির সেগুলি ডিকোড করার জন্য একটি স্টেট মেশিনের প্রয়োজন libiconv
হয় এবং পুরো অক্ষরগুলি গ্রহণ করা পছন্দ করে, তাই আপনি এটি কেবল একটি ফাংশন কলের অর্ধেক অক্ষর এবং পরের অংশে অন্য অর্ধেক দিতে পারবেন না।
আমি আরও দুটি সমাধান সম্পর্কে ভাবতে পারি, একটি হ'ল একটি ভাল-ব্যান্ড পদ্ধতি, অন্যটি একটি ইন-ব্যান্ড হ্যাক।
টার্মিনাল এমুলেটরের এনকোডিং (আউট-ব্যান্ড) পরিবর্তন করুন: একটি হ'ল আপনার টার্মিনাল এমুলেটরে অক্ষর এনকোডিং পরিবর্তন করা, সুতরাং এর নেটিভ এনকোডিংটি শিফট জেআইএস। আমি সবেমাত্র যাচাই করেছি konsole
, এবং এটি সমর্থন করে। মেনু থেকে, দেখুন → চরিত্রের এনকোডিং → জাপানিস j তারপরে আপনি কেবল tail -f
ফাইলটি করতে পারেন , এবং konsole
মাল্টিবাইট অক্ষরগুলি ডিকোড করার এবং ফন্ট গ্লাইফগুলির সাথে তাদের মিলিয়ে দেওয়ার যত্ন নেবেন।
ফ্লাইতে ট্রান্সকোড টার্মিনাল এনকোডিং (ইন-ব্যান্ড; সেরা) : গিলিসের সৌজন্যে, যিনি আমাকে অনেক দিন luit
পরে মনে করিয়ে দিয়েছিলেন । ব্যবহার করুন luit
, যা আপনার XOrg বিতরণ নিয়ে আসা উচিত ছিল (ডেবিয়ান এটির প্যাকেজটিতে x11-utils
)। এটি এর মতো ব্যবহার করুন:
$ luit -encoding SJIS -- tail -f x
এটি আপনার টার্মিনাল এনকোডিংটিতে / থেকে টার্মিনাল ট্রান্সকোড এসজেআইএস তৈরি করবে এবং চালাবে tail -f x
। খারাপ দিকটি luit
হ'ল এটি দ্বারা সমর্থিত এনকোডিংগুলির সম্পদ সমর্থন করে না libiconv
। উল্টোটি এটি প্রায় সর্বত্র পাওয়া যায়।
ফ্লাইতে ট্রান্সকোড টার্মিনাল এনকোডিং (ইন-ব্যান্ড; হ্যাক) : ttyconv
এটি একটি হ্যাক যা আমি বহু বছর আগে লিখেছিলাম (প্রথম দিকে সিতে, পরে পাইথনে পুনরায় করা হয়েছিল) যা libiconv
টার্মিনাল I / O ট্রান্সকোড ব্যবহার করে। এটি একটি নতুন সিউডোটার্মিনাল তৈরি করেছে এবং (ক) আপনার স্থানীয় এনকোডিং থেকে আপনি যে অক্ষরগুলি টাইপ করেছেন তা দূরবর্তী এনকোডিংয়ে ট্রান্সকোড করে এবং (খ) রিমোট এনকোডিং থেকে প্রাপ্ত অক্ষরগুলি আপনার স্থানীয় এনকোডিংয়ে ট্রান্সকোড করে। আমি এটি সার্ভারের সাথে কথা বলার জন্য ব্যবহার করেছি যা স্ট্যান্ডার্ড লিনাক্স টার্মিনাল সমর্থন করে না এনকডিংগুলি ব্যবহার করে। দয়া করে মনে রাখবেন যে আমি যে রিমোট এনকোডিংগুলির সাথে এটি পরীক্ষা করেছিলাম সেগুলি হ'ল সিঙ্গল-বাইট এনকোডিংস, তাই আমি শিফট জেআইএস-এর পক্ষে কাজ করার গ্যারান্টি দিতে পারি না। বেশিরভাগ সিস্টেমে ইউনিকোডে স্যুইচ করে আমি আজকাল প্রায়শই এটি ব্যবহারের জন্য কল পাই না।
আপনি এটি এইভাবে ব্যবহার করবেন:
$ ttyconv -rsjis -- tail -f x
নেতিবাচক দিকটি ttyconv
হ'ল আমি এটি লিখেছি, কেউই এটি ব্যবহার করে তবে আমি, এটি সম্ভবত বাগগুলি পূর্ণ। আমি এই এক্সেল। উল্টোটি এটি ব্যবহার করে libiconv
, সুতরাং আপনার এনকোডিংটি যদি অস্বাভাবিক হয় তবে এটি আপনার সেরা বাজি। শেষ গণনায়, ttyconv --list
100 টি এনকোডিং সমর্থন করে।