টার্মিনালে ANG LANG এর প্রভাব


11

আমি চেষ্টা করছি শিখতে কিভাবে $LANGজিনোম-টার্মিনাল (এবং তার অক্ষর এনকোডিং পক্ষপাত বিকল্প) সঙ্গে পরিবর্তনশীল আচরণ করে। আমি iso8859-1 (লাতিন 1) কে আমার প্রধান চরিত্র-সেট হিসাবে ব্যবহার করেছি এবং আমার সমস্ত ফাইলের নামগুলি এর মতো এনকোড করা আছে।

নিম্নলিখিত পরীক্ষার জন্য আমি ls -lতাদের ফাইলের নামগুলিতে স্প্যানিশ উচ্চারণযুক্ত অক্ষরগুলির সাথে একটি ডিরেক্টরি করব :

মামলা 1:

  • জিনোম-টার্মিনালটি আইএসও -8859-1-এর জন্য কনফিগার করা হয়েছে
  • LANG "en_US-iso8859-1" এ সেট করুন
  • ফলাফল: আমি সমস্ত ফাইল সঠিকভাবে দেখছি

কেস # 2:

  • জিনোম-টার্মিনালটি ইউটিএফ -8 এর জন্য কনফিগার করা হয়েছে
  • LANG "en_US-iso8859-1" এ সেট করুন
  • ফলাফল: আমি সমস্ত স্প্যানিশ অক্ষরের জন্য আবর্জনা অক্ষর দেখতে পাচ্ছি। আমি টার্মিনালের জন্য অক্ষর-এনকোডিংটি পরিবর্তন করায় এটি প্রত্যাশিত

কেস # 3:

  • জিনোম-টার্মিনালটি আইএসও -8859-1-এর জন্য কনফিগার করা হয়েছে
  • LANG "en_US-UTF-8" এ সেট করুন
  • ফলাফল: আমি সমস্ত স্প্যানিশ অক্ষরের জন্য আবর্জনা অক্ষর দেখতে পাচ্ছি।

কেন এই শেষ ক্ষেত্রে আমি ঘূর্ণিত চরিত্রগুলি দেখতে পাচ্ছি? Ls এর আউটপুট ফাইলের নামগুলি সোজা জিনোম-টার্মিনালে প্রেরণ করা উচিত নয় ? এবং যেহেতু জিনোম-টার্মিনালটি আইএসও -8859-1-এর জন্য কনফিগার করা আছে, তাই আমি তাদের সঠিক দেখতে প্রত্যাশা করব।

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

মোড়ানোর জন্য: যদি আমার তালিকায় আইএসও -8859-1 অক্ষর রয়েছে এবং আমার টার্মিনাল এমুলেটরটি একই অক্ষর-এনকোডিংয়ের জন্য কনফিগার করা হয়েছে: LANGঅন্যথায় সেট করা থাকলে কে রূপান্তর করছে ?

যেকোন ধরনের সাহায্যের জন্য তোমাকে ধন্যবাদ।

Craconia

উত্তর:


5

আপনার সেটিংস LANGঅবশ্যই টার্মিনালের সাথে মেলে। আরও স্পষ্টতই, আপনার LC_CTYPEঅক্ষরের (অক্ষর এনকোডিং) অবশ্যই টার্মিনালের এনকোডিংয়ের সাথে মিলে যেতে হবে, অন্যান্য লোকেল সেটিংসের সাথে মিলের প্রয়োজন নেই। এবং টার্মিনালের এনকোডিং সাধারণত টার্মিনাল এমুলেটারের একটি বিকল্প দ্বারা নির্দিষ্ট করা হয়, লোকেল ভেরিয়েবল দ্বারা নয়। LC_CTYPEসম্মিলন দুই সূত্রানুযায়ী: এটা কি টার্মিনাল ব্যবহার করতে এনকোডিং (উভয় ইনপুট এবং আউটপুট জন্য) অ্যাপ্লিকেশন বলে, এবং এটা কি ফাইল সঙ্গে ব্যবহার করার জন্য এনকোডিং অ্যাপ্লিকেশনের বলে। 2 এবং 3 এর ক্ষেত্রে, আপনি lsকোনও এনকোডিংয়ে আউটপুট প্রদর্শন করতে বলেছেন যা টার্মিনালের থেকে পৃথক, সুতরাং আউটপুট গার্ফড।

আপনি যদি বিভিন্ন সময়ে ইউটিএফ -8 এবং ল্যাটিন -1 উভয় এনকোডিংয়ের সাথে কাজ করেন তবে ইউটিএফ -8 ব্যবহার করতে আপনার টার্মিনালটি কনফিগার করুন। এটির ফলে এটি LC_CTYPEইউটিএফ -8 নির্দেশ করে এমন কোনও মান সেট করতে পারে; এই সেটিংটি ওভাররাইড করবেন না। (যদি টার্মিনাল এমুলেটরটি সেট না করে থাকে তবে LC_CTYPEএটি আপনার শেল স্টার্টআপ ফাইলে বা আপনার পুরো সেশনের জন্য ওভাররাইড করুন)) ইউটিএফ -8 টার্মিনালে ল্যাটিন -1 ডেটা নিয়ে কাজ করতে, luit(এক্স ইউটিলিটি স্যুটে অন্তর্ভুক্ত) ব্যবহার করুন।

LC_CTYPE=en_US.iso88591 luit

(আপনি একই এনকোডিং সহ অন্য কোনও লোকেল ব্যবহার করতে পারেন, যেমন LC_CTYPE=es_ES.iso88591 luit))


গিলসকে সেই বিস্ময়কর ব্যাখ্যার জন্য, বিশেষত এলসি_সিটিওয়াইপি-র দুটি সূচকটি ব্যাখ্যা করার জন্য ধন্যবাদ।
ক্র্যাকোনিয়া

আমার শেষ কেসটিতে ফিরে যাওয়া: আমি ভেবেছিলাম যেহেতু সমস্ত ফাইলের নাম লাতিন 1 এ এনকোড করা হয়েছে এবং আমার চূড়ান্ত আউটপুট ডিভাইসটি যে, গ্লিফগুলি (আমার টার্মিনাল) তৈরি করা হয়েছে সেটি ল্যাটিন 1-এর জন্যও কনফিগার করা হয়েছিল, তাই আমি ফাইলগুলি সঠিকভাবে দেখার আশা করছিলাম (LC_CTYPE নির্বিশেষে) ...
ক্র্যাকোনিয়া

এটা আমার কাছে কখনোই ঘটেছে যে ls(এই ক্ষেত্রে হল UTF-8 সেট করুন) LC_CTYPE বিবেচনা করবে এবং চরিত্র সেট বৈধতা কিছু সঞ্চালন হবে: যখনই এটা কিছু অক্ষর সেট এটা একটি নির্দিষ্ট অক্ষর থুতু হবে (যেমন "সাথে সামঞ্জস্যপূর্ণ নয় দেখেন? ")। আমি বলেছিলাম "বৈধতা" কারণ এটি লিট যেমন "রূপান্তর" সম্পাদন করে না। এটা কি এমন?
ক্র্যাকোনিয়া

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

5

# 2 এবং # 3 ক্ষেত্রে আপনি দুটি পৃথক এনকোডিং ইউটিএফ -8 এবং ল্যাটিন -1 মিশ্রণ করছেন। ক্ষেত্রে # 1 আপনি উভয়ের জন্য ল্যাটিন -1 ব্যবহার করছেন, যাতে আপনার কোনও সমস্যা হয় না।

lsকমান্ড (এবং অন্যান্য সব ভাল ব্যবহারকে কর্মসূচি) নির্ধারণের জন্য LANG- তে সেটিং ব্যবহার এনকোডিং

আপনি দুটি পৃথক ভাষার মিশ্রণ করতে পারেন, তবে আপনার দুটি পৃথক এনকোডিং মিশ্রিত করা উচিত নয়

নিশ্চিত করুন যে এলসি_ * এনভায়রনমেন্ট ভেরিয়েবলগুলিও আপনার ল্যাং ভেরিয়েবলের মতো একই এনকোডিংটি ব্যবহার করছে।

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

যদি আপনাকে পুরানো ফ্যাশনযুক্ত ডেটা ফাইলগুলি সম্পাদনা করতে হয় (যেমন জাভা বৈশিষ্ট্য) আপনার উচিত হয় বিশেষায়িত সম্পাদক (উদাহরণস্বরূপ জাভা আইডিয়া) ব্যবহার করা উচিত iconvবা `রিকোডের মতো সরঞ্জামগুলির সাথে এনকোডিং নিশ্চিত করা উচিত ..


ধন্যবাদ। হ্যাঁ, অদূর ভবিষ্যতে আমার ইউটিএফ -8 এ যাওয়ার পরিকল্পনা রয়েছে। অনেকগুলি পাঠ্য ফাইলকে রূপান্তর করতে একগুচ্ছ ফাইলের নাম পেল। আইকনভি & উদ্ধার করার জন্য সম্মতি জানানো ...
ক্র্যাকোনিয়া

0

এটি আপনার প্রয়োজনের বাইরেও হতে পারে তবে ....

এটি আরএইচইএল 5-এ দেখা গেছে এবং সম্ভবত পূর্ববর্তী সময়ে, অনেকগুলি মানব পৃষ্ঠাগুলিতে কোনওরকম জিডি পূর্বাভাসের কারণে, অ্যাসিআই-আইজড হয়েছে। অর্থাৎ কাঁচা ম্যান পৃষ্ঠাটি তার স্থানীয় চরিত্র থেকে 7-বিট ASCII তে রূপান্তরিত হয়েছে। আপনি এলসি এবং ল্যাংয়ের সাথে যা কিছু করেন না কেন, ম্যান পৃষ্ঠাটি latin1একটি ম্যান পৃষ্ঠা তৈরি করে যা কার্যকরভাবে অকেজো is এর মধ্যে সমস্ত বিশেষ (8-বিট) অক্ষর 7-বিট স্থানধারক (সাধারণত ??) দ্বারা প্রতিস্থাপন করা হয়েছে । আমি এই হাসিখুশি।

তবে utf8এই ম্যান পৃষ্ঠাগুলির সংস্করণটি ভাষা-নির্দিষ্ট ডিরেক্টরিতে থাকতে পারে। কৌশলটি তাদের সঠিক নাম দিয়ে জিজ্ঞাসা করা। উদাহরণস্বরূপ, ল্যাটিন 1 আসলে iso_8859-1। আপনি যদি এটিতে কোনও ম্যান পেজ করেন এবং আপনার ল্যাং সেটিংস সঠিক হয় তবে আপনি যা প্রত্যাশা করছেন তা দেখতে পান; ম্যান পৃষ্ঠাটি ভাষা-নির্দিষ্ট সাবডির ( en/man7/iso_8859-1.7) এ পাওয়া যায় । তবে যদি আপনি iso-8859-1কোনও কারণে জিজ্ঞাসা করেন তবে আপনি ASCII সংস্করণ পাবেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.