টার্মিনালের চরিত্রের এনকোডিং কীভাবে পাবেন


116

এখন আমি আমার জিনোম-টার্মিনালের চরিত্রের এনকোডিংটি "জিবিকে" (ডিফল্টরূপে এটি ইউটিএফ -8) এ পরিবর্তন করি, তবে আমি কীভাবে আমার লিনাক্সে মান (অক্ষর এনকোডিং) পেতে পারি?


উত্তর:


108

টার্মিনালটি কোন অক্ষরটি ব্যবহার করতে হবে তা নির্ধারণ করতে পরিবেশের ভেরিয়েবল ব্যবহার করে, সুতরাং আপনি এই পরিবর্তনগুলি দেখে এটি নির্ধারণ করতে পারেন:

echo $LC_CTYPE

অথবা

echo $LANG

4
এই পরিবেশের ভেরিয়েবলগুলি অ্যাপ্লিকেশনগুলি ব্যবহার করে যা I / O এর জন্য টার্মিনাল ব্যবহার করে। টার্মিনাল এমুলেটরটি নিজেই তাদের সম্পর্কে কোনও জ্ঞান রাখে না এবং এটির বর্তমানে কার্যকর চরিত্রের এনকোডিংটি এমুলেটর প্রোগ্রামের মধ্যে কোথাও একটি সেটিংস (জিনোম টার্মিনালের ক্ষেত্রে একটি লিবিভেট ক্লাসের মধ্যে একটি ডেটা সদস্য)।
JdeBP

এখানে প্রস্তাবিত ভেরিয়েবলের ক্রমটি ভাল নয়। আরও একটি সম্পূর্ণ সমাধান হতে পারে এরকম কিছু: প্রতিধ্বনি $ {এলসি_এলএল: - $ C এলসি_সিটিওয়াই: - $ {ল্যাং}}}} তারপরে আবার, ভেরিয়েবলটি সেট করা কোনও গ্যারান্টি নয় যে সেগুলি বৈধ, সুতরাং আপনার localeপ্রোগ্রামটি আটকে থাকা উচিত (এখানে অন্যান্য উত্তরে যেমন দেখা যায়)
মাইক ফ্রাইসিংগার

@ জেডিবিপি যেমন বলেছে, টার্মিনালটি এর এনকোডিং নির্ধারণ করতে পরিবেশের ভেরিয়েবল ব্যবহার করে নাlocale । টার্মিনাল যাইহোক অ্যাপ্লিকেশনগুলি যা এটির সাথে যোগাযোগ করে সেটি localeপরিবেশের ভেরিয়েবলগুলি সেট করে এর এনকোডিংটি জানতে দেয় । উদাহরণস্বরূপ, MacOS এ আপনার টার্মিনাল এনকোডিং নির্বাচন এবং ঐচ্ছিকরূপে সেট করতে পারেন localeটার্মিনাল স্টার্টআপে এনভায়রনমেন্ট ভেরিয়েবল Terminal> Preferences> Profiles> Advanced
ম্যাগগিরো

97

locale কোনও আর্গুমেন্ট সহ কমান্ডটি ভাষা বাদে প্রাসঙ্গিক পরিবেশের সমস্ত ভেরিয়েবলের মান মুদ্রণ করবে।

বর্তমান এনকোডিংয়ের জন্য:

locale charmap

উপলব্ধ লোকেলের জন্য:

locale -a

উপলব্ধ এনকোডিংগুলির জন্য:

locale -m

1
এটি আমার জন্য সেন্টোস সিস্টেমে কাজ করেছিল। এটি বর্তমান ভাষার সেটিংসের উপর ভিত্তি করে সিস্টেম এনকোডিং দেখিয়েছে। সেই মেশিনে উঠতে ব্যবহৃত টার্মিনাল সেটিংস হ'ল আলাদা গল্প এবং ক্লায়েন্টের ব্যবহৃত একটি ফাংশন।
ফিল ডিডি

45

এনকোডিং এবং ভাষা পরীক্ষা করুন:

$ echo $LC_CTYPE
ISO-8859-1
$ echo $LANG
pt_BR

সমস্ত ভাষা পান:

$ locale -a

Pt_PT.utf8 এ পরিবর্তন করুন:

$ export LC_ALL=pt_PT.utf8 
$ export LANG="$LC_ALL"

16

যদি পাইথন থাকে:

python -c "import sys; print(sys.stdout.encoding)"

1
উপরের সমস্ত অফারগুলির মধ্যে আমার স্ল্যাকওয়ার ware৪ বনাম ১৪.২ বাক্সে কাজ করা একমাত্র পরামর্শ ছিল অজগরটির এই স্নিপেট et ধন্যবাদ!
থমাস আল্টাফাদার ভাল

6

আমার জ্ঞান, না।

থেকে অবস্থাগত সূত্রানুযায়ী $LC_CTYPE, localeএবং এই ধরনের শক্তি লোভনীয় মনে, কিন্তু এই সম্পূর্ণভাবে টার্মিনাল অ্যাপ্লিকেশন এনকোড করা (আসলে একটি এমুলেটর) থেকে পৃথক করা হয় যখন পর্দায় অক্ষর প্রদর্শন করার ব্যবহার করা হবে।

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

সুতরাং না, দুঃখের বিষয়, এটি সম্ভব নয়।


0

বর্তমান লোকাল তথ্য দেখতে localeকমান্ডটি ব্যবহার করুন । নীচে RHEL 7.8 এর একটি উদাহরণ দেওয়া আছে on

[usr@host ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.