আমি যখন একটি টেক্সট ফাইলে 'এ' রাখি, এটি 2 বাইট করে তোলে তবে আমি যখন রাখি, তখন 'ա' বলি, এটি আর্মেনিয়ান বর্ণমালার একটি চিঠি, এটি এটি 3 বাইট করে।
কম্পিউটারের বর্ণমালার মধ্যে পার্থক্য কী?
ইংরেজী কেন কম জায়গা নেয়?
আমি যখন একটি টেক্সট ফাইলে 'এ' রাখি, এটি 2 বাইট করে তোলে তবে আমি যখন রাখি, তখন 'ա' বলি, এটি আর্মেনিয়ান বর্ণমালার একটি চিঠি, এটি এটি 3 বাইট করে।
কম্পিউটারের বর্ণমালার মধ্যে পার্থক্য কী?
ইংরেজী কেন কম জায়গা নেয়?
উত্তর:
মূলধারার কম্পিউটারগুলিতে ব্যবহারের জন্য তৈরি করা প্রথম এনকোডিং স্কিমগুলির মধ্যে একটি হ'ল ASCII ( আমেরিকান স্ট্যান্ডার্ড কোড ফর ইনফরমেশন ইন্টারচেঞ্জ ) স্ট্যান্ডার্ড। এটি মার্কিন যুক্তরাষ্ট্রে 1960 এর দশকে বিকশিত হয়েছিল।
ইংরেজি বর্ণমালাটি লাতিন বর্ণমালার অংশ ব্যবহার করে (উদাহরণস্বরূপ, ইংরেজিতে কয়েকটি উচ্চারণ শব্দ রয়েছে)। সেই বর্ণমালায় 26 টি পৃথক বর্ণ রয়েছে, কেস বিবেচনা করছে না। এবং ইংরেজী বর্ণমালা এনকোড করার ভান করে যে কোনও স্কিমে পৃথক নম্বর এবং বিরাম চিহ্নগুলি উপস্থিত থাকতে হবে।
১৯60০ এর দশকও এমন একটি সময় ছিল যেখানে আমাদের কাছে বর্তমানে মেমরি বা ডিস্ক জায়গার পরিমাণ কম্পিউটারের ছিল না didn't এএসসিআইআই সমস্ত আমেরিকান কম্পিউটারে ক্রিয়ামূলক বর্ণমালার একটি আদর্শ প্রতিনিধিত্ব হিসাবে বিকাশিত হয়েছিল। সেই সময়ে, প্রতিটি এএসসিআইআই চরিত্রকে 8 বিট (1 বাইট) দীর্ঘ করার সিদ্ধান্ত নেওয়া হয়েছিল সেই সময়ের প্রযুক্তিগত বিবরণের কারণে (উইকিপিডিয়া নিবন্ধটিতে উল্লেখ করা হয়েছে যে ছিদ্রযুক্ত টেপটি একবারে একটি পদে 8 বিট ধারণ করেছিল)। আসলে, আসল এএসসিআইআই স্কিমটি 7 টি বিট ব্যবহার করে প্রেরণ করা যেতে পারে, আটটি প্যারিটি চেকের জন্য ব্যবহার করা যেতে পারে। পরবর্তী উন্নয়নগুলি বেশ কয়েকটি উচ্চারণকৃত, গাণিতিক এবং টার্মিনাল অক্ষর অন্তর্ভুক্ত করতে মূল ASCII স্কিমটি প্রসারিত করে।
বিশ্বজুড়ে কম্পিউটারের ব্যবহার সাম্প্রতিক বৃদ্ধি পাওয়ায় বিভিন্ন ভাষা থেকে আরও বেশি সংখ্যক লোকের একটি কম্পিউটারে অ্যাক্সেস ছিল। এর অর্থ হ'ল, প্রতিটি ভাষার জন্য নতুন এনকোডিং স্কিমগুলি অন্যান্য স্কিম থেকে স্বতন্ত্রভাবে বিকাশ করতে হয়েছিল, যা বিভিন্ন ভাষা টার্মিনাল থেকে পড়লে বিরোধ হবে।
ইউনিকোড বিভিন্ন টার্মিনালগুলির অস্তিত্বের সমাধান হিসাবে এসেছিল, সম্ভাব্য অর্থবোধক সমস্ত অক্ষরকে একক বিমূর্ত অক্ষরের অক্ষরে মার্জ করে।
ইউটিএফ -8 ইউনিকোড অক্ষর সেটটি এনকোড করার একটি উপায়। এটি একটি পরিবর্তনশীল-প্রস্থের এনকোডিং (যেমন বিভিন্ন অক্ষরের বিভিন্ন আকার থাকতে পারে) এবং এটি পূর্বের ASCII স্কিমের সাথে সামনের সামঞ্জস্যের জন্য ডিজাইন করা হয়েছিল। যেমন, ASCII অক্ষর সেটটি একটি বাইট বড় হতে থাকবে যদিও অন্য কোনও অক্ষর দুটি বা ততোধিক বাইট বড়। ইউটিএফ -16 ইউনিকোড অক্ষর সেটটি এনকোড করার অন্য উপায়। ইউটিএফ -8 এর তুলনায়, অক্ষরগুলি এক বা দুটি 16-বিট কোড ইউনিটের সেট হিসাবে এনকোড করা হয়।
মতামত হিসাবে বলা হয়েছে, 'একটি' চরিত্রটি একটি একক বাইট দখল করে এবং 'ա' দুটি বাইট দখল করে, এটি ইউটিএফ -8 এনকোডিংকে বোঝায়। আপনার প্রশ্নের অতিরিক্ত বাইটটি শেষ দিকে একটি নতুন লাইন চরিত্রের অস্তিত্বের কারণে হয়েছিল (যা ওপি জানতে পেরেছিল)।
echo 'ա' > file.txt
এটি ব্যবহার করেন বা কিছু সম্পাদক ব্যবহার করে ফাইলটি সম্পাদনা করেন তবে তারা স্বয়ংক্রিয়ভাবে এর পরে একটি নতুন লাইন যুক্ত করে। আপনি যদি চালনা করেন xxd file.txt
তবে শেষ বাইটটি সম্ভবত একটি 0a
, বা লাইন ফিড হবে।
a
, দুটি বাইট ব্যবহার করবে (বা দুটিটির একাধিক)।
1 বাইটটি 8 বিট হয় এবং এভাবে 256 (2 ^ 8) পর্যন্ত বিভিন্ন মান উপস্থাপন করতে পারে।
এর চেয়ে আরও বেশি সম্ভাবনার প্রয়োজন असलेल्या ভাষার জন্য একটি সাধারণ 1 থেকে 1 ম্যাপিং বজায় রাখা যায় না, তাই একটি অক্ষর সংরক্ষণ করার জন্য আরও ডেটা প্রয়োজন।
নোট করুন যে সাধারণত, বেশিরভাগ এনকোডিংগুলি ASCII অক্ষরের জন্য প্রথম 7 বিট (128 মান) ব্যবহার করে । এটি অষ্টম বিট বা আরও অক্ষরের জন্য আরও 128 মান রেখে যায়। । । উচ্চারণযুক্ত অক্ষর, এশিয়ান ভাষা, সিরিলিক ইত্যাদি যোগ করুন এবং আপনি সহজেই দেখতে পাবেন যে সমস্ত অক্ষর রাখার জন্য 1 বাইট কেন পর্যাপ্ত নয়।
ইউটিএফ -8 এ, এএসসিআইআই অক্ষরগুলি একটি বাইট ব্যবহার করে, অন্যান্য অক্ষর দুটি, তিন বা চারটি বাইট ব্যবহার করে।
কোনও চরিত্রের জন্য প্রয়োজনীয় বাইটের পরিমাণ (যা প্রশ্নটি আপাতদৃষ্টিতে সম্পর্কিত) অক্ষর এনকোডিংয়ের উপর নির্ভর করে। আপনি যদি আর্মএসসিআইআই এনকোডিং ব্যবহার করেন তবে প্রতিটি আর্মেনিয়ান অক্ষর কেবল একটি বাইট দখল করে। যদিও আজকাল এটি ভাল পছন্দ নয়।
ইউনিকোডের জন্য ইউটিএফ -8 স্থানান্তর এনকোডিংয়ে, অক্ষরগুলির জন্য পৃথক সংখ্যক বাইট প্রয়োজন need এতে "ক" কেবল একটি বাইট নেয় (দুটি বাইট সম্পর্কে ধারণাটি এক ধরণের বিভ্রান্তি), "á" দুটি বাইট নেয় এবং আর্মেনিয়ান অক্ষর আইয়ব "ա" দুটি বাইটও গ্রহণ করে। তিন বাইট অবশ্যই এক ধরণের বিভ্রান্তি হতে হবে। বিপরীতে, উদাহরণস্বরূপ, বাংলা অক্ষর একটি "অ" ইউটিএফ -8 এ তিন বাইট নেয়।
পটভূমিটি হ'ল ইউটিএফ -8 এসকি চরিত্রগুলির জন্য খুব দক্ষ, ইউরোপ এবং আশেপাশের অঞ্চলে সিস্টেম লেখার পক্ষে মোটামুটি দক্ষতার জন্য ডিজাইন করা হয়েছিল এবং বাকি সমস্তগুলিই কম দক্ষ। এর অর্থ হ'ল বেসিক ল্যাটিন অক্ষর (যা ইংরেজি পাঠ্য বেশিরভাগটি নিয়ে থাকে), একটি চরিত্রের জন্য কেবল একটি বাইট প্রয়োজন; গ্রীক, সিরিলিক, আর্মেনিয়ান এবং আরও কয়েকজনের জন্য দুটি বাইটের প্রয়োজন; বাকি সব আরও প্রয়োজন।
ইউটিএফ -8 (যেমন একটি মন্তব্যে দেখানো হয়েছে) এছাড়াও দরকারী সম্পত্তি যা আসকি ডেটা (যখন 8-বিট ইউনিট হিসাবে উপস্থাপিত হয়, যা প্রায় দীর্ঘ সময়ের জন্য প্রায় একমাত্র উপায় ছিল) খুব তুচ্ছ UTF-8 এনকোডযুক্তও রয়েছে।
1960 এর দশকের অক্ষর কোডগুলি (এবং এর বাইরেও) মেশিন-নির্দিষ্ট ছিল। 1980 এর দশকে আমি সংক্ষেপে একটি ডিসি 2020 মেশিন ব্যবহার করেছি, যার 36 বিট শব্দ ছিল এবং 5, 6 এবং 8 ( অক্ষর এনকোডিংগুলিতে প্রতি আইআইআরসি ) বিট ছিল। তার আগে, আমি ইবিসিডিকের সাথে একটি আইবিএম 370 সিরিজ ব্যবহার করেছি। C টি বিট সহ এএসসিআইআই অর্ডার এনেছে, তবে এটি আইবিএম পিসি "কোডপেজ" এর সাথে অতিরিক্ত 8 টি বিট ব্যবহার করে, যেমন আদিম মেনুগুলি আঁকার জন্য সমস্ত ধরণের বক্স অঙ্কন করে, এবং পরে ল্যাটিন -1 (8 বিট) এর মতো এএসসিআইআই এক্সটেনশনগুলির সাথে জগাখিচুড়ি হয়েছে " এনকোডিং, প্রথম 7 বিট ASCII এবং "জাতীয় অক্ষর" মত জন্য বাকী অর্ধেক মতো ñ
, Ç
অথবা অন্যদের। সম্ভবত সবচেয়ে জনপ্রিয় ল্যাটিন -1 ছিল, ল্যাটিন অক্ষর ব্যবহার করে ইংরেজি এবং সবচেয়ে ইউরোপীয় ভাষা মতন (এবং কথা এবং রূপগুলো)।
পাঠ্য মিশ্রণ যেমন: ইংরেজি এবং স্পেনীয় জরিমানা হয়েছে (কেবল লাতিন -১ ব্যবহার করুন, উভয়ের সুপারসেট), তবে এমন কোনও কিছু মিশ্রণ যা আলাদা আলাদা এনকোডিংগুলি ব্যবহার করে (যেমন জাপানের মতো এশীয় ভাষার উল্লেখ না করার জন্য গ্রীক, বা রাশিয়ান একটি স্নিপেট অন্তর্ভুক্ত থাকে) একটি সত্যিকারের দুঃস্বপ্ন। সবচেয়ে খারাপটি ছিল যে রাশিয়ান এবং বিশেষত জাপানি এবং চীনাদের বেশ কয়েকটি জনপ্রিয়, সম্পূর্ণ বেমানান এনকোডিং ছিল।
আজ আমরা ইউনিকোড ব্যবহার করি, যা ইউটিএফ -8 এর মতো দক্ষ এনকোডিংগুলিতে কাপল যা ইংরেজী অক্ষরকে পছন্দ করে (আশ্চর্যরূপে, ইংরেজি অক্ষরের এনকোডিং ঠিক তেমনই ASCII এর সাথে মিলে যায়) ফলে বহু অ-ইংলিশ অক্ষর দীর্ঘতর এনকোডিং ব্যবহার করে।
উইন্ডোজ 8.1 ইউএস / ইংলিশ ফাইল একক 'এ' দিয়ে নোটপ্যাডের সাহায্যে সংরক্ষিত হয়েছে।
নোটপ্যাডের সাহায্যে একক 'ա' ফাইল সংরক্ষণ করা হয়েছে
এএনএসআই-তে একটি সিঙ্গেল 'এ' একক বাইট হিসাবে এনকোড করা হয়, ইউনিকোডে প্রতিটি অক্ষর সাধারণত 2 বাইট হয় ফাইলের শুরুতে একটি 2 বাইট বিওএম (বাইট অর্ডার মার্কার) থাকে। ইউটিএফ -8 এ একটি 3 বাইট বিওএম এবং একক বাইট অক্ষর রয়েছে।
'Ա' এর জন্য এএনএসআই চরিত্রের সেটটিতে সেই চরিত্রটি বিদ্যমান নেই এবং আমার মেশিনে সংরক্ষণ করা যায় না। ইউনিকোড ফাইলটি আগের মতোই এবং ইউটিএফ -8 ফাইলটি 1 বাইট বড় হওয়ায় চরিত্রটি 2 বাইট নেয়।
যদি আপনার মেশিনটি আলাদা অঞ্চল থেকে থাকে তবে আপনার একটি আলাদা OEM কোড পৃষ্ঠা ইনস্টল থাকতে পারে যা ASCII ব্যাপ্তিতে সম্ভব 255 টি অক্ষরের জন্য বিভিন্ন গ্লাইফ রয়েছে। যেমন @ntoskrnl উল্লেখ করেছে যে আমার মেশিনের জন্য OEM কোডপেজটি উইন্ডোজ -১২২২ হবে যা ইউএস ইংলিশের জন্য ডিফল্ট।
আপনি যদি অক্ষরগুলি কীভাবে সংরক্ষণ করা হয় সে সম্পর্কে আগ্রহী হন তবে আপনি www.unicode.org এ গিয়ে আশেপাশে দেখতে পারেন। তাদের প্রধান পৃষ্ঠার শীর্ষে একটি লিঙ্ক "কোড চার্ট" রয়েছে যা আপনাকে ইউনিকোডে উপলব্ধ সমস্ত অক্ষর কোডগুলি দেখায়।
সব মিলিয়ে ইউনিকোডে কিছু মিলিয়নেরও বেশি কোড উপলব্ধ রয়েছে (তাদের সবকটিই ব্যবহৃত হয় না)। একটি বাইট 256 টি বিভিন্ন মান ধরে রাখতে পারে, তাই আপনি যদি প্রতিটি সম্ভাব্য ইউনিকোড কোড সঞ্চয় করতে চান তবে আপনার কাছে তিনটি বাইটের প্রয়োজন হবে।
পরিবর্তে, ইউনিকোড সাধারণত "ইউটিএফ -8" এনকোডিংয়ে সংরক্ষণ করা হয় যা কিছু অক্ষরের জন্য কম বাইট ব্যবহার করে এবং অন্যদের জন্য আরও কিছু ব্যবহার করে। প্রথম 128 কোড মানগুলি একটি বাইটে সংরক্ষণ করা হয়, প্রথম 2048 কোডের মান দুটি বাইটে সংরক্ষণ করা হয়, 65536 অবধি তিনটি বাইটে সংরক্ষণ করা হয় এবং বাকী চারটি বাইট নেয় take এটি এমনভাবে সাজানো হয়েছে যাতে কোড মানগুলি যেগুলি প্রায়শই ব্যবহৃত হয় সেগুলি কম স্থান নেয়। এজেড, এজেড, ০-৯ এবং! @ $% ^ & * () - [} {}; ': "|, </ <>? এবং কিছু যে আমি একটি বাইট নিতে ভুলে গেছি; প্রায় সমস্ত ইংরেজী, 98% এর জার্মান এবং ফরাসি (কেবল অনুমান করা) প্রতিটি চরিত্রের জন্য একটি বাইটে সংরক্ষণ করা যেতে পারে, এবং এগুলি এমন অক্ষর যা সর্বাধিক ব্যবহৃত হয়। সিরিলিক, গ্রীক, হিব্রু, আরবি এবং আরও কিছু অক্ষর প্রতি দুটি বাইট ব্যবহার করে Indian ভারতীয় ভাষা, বেশিরভাগ চীনা, জাপানি , কোরিয়ান, থাই, অগণিত গাণিতিক চিহ্ন, অক্ষর প্রতি তিন বাইটে লেখা যেতে পারে। বিরল জিনিস (আপনি যদি কখনও লিনিয়ার এ বা লিনিয়ার বি, ইমোজিগুলিতে লেখা লিখতে চান) চারটি বাইট নিন take
অন্য এনকোডিংটি ইউটিএফ -16। ইউটিএফ -8 এ 1, 2 বা 3 বাইট লাগে এমন সমস্ত কিছু ইউটিএফ -16 এ দুটি বাইট নেয়। এর মধ্যে যদি আপনার খুব কম ল্যাটিন অক্ষরযুক্ত চীনা বা জাপানি পাঠ্য থাকে তবে এটি একটি সুবিধা।
ইউটিএফ -8 ডিজাইনের কারণ সম্পর্কে: অন্যান্য ডিজাইনের তুলনায় এর বেশ কয়েকটি সুবিধা রয়েছে। তারা হ'ল:
US-ASCII অক্ষরের সাথে সামঞ্জস্য
যুক্তিসঙ্গত কমপ্যাক্টনেস
স্ব-সিঙ্ক্রোনাইজেশন: এর অর্থ হ'ল আপনাকে যদি ইউটিএফ -8 এনকোডিংয়ের অক্ষরগুলি বাইটগুলির ক্রমের অংশ দেওয়া হয় তবে আপনি কোথায় অক্ষর শুরু হয় তা সন্ধান করতে পারেন। কিছু এনকোডিংগুলিতে, xy এবং yx উভয় অক্ষরের বৈধ এনকোডিং হতে পারে, সুতরাং যদি আপনাকে কোনও অনুক্রমের অংশ দেওয়া হয় ... xyxyxyxyxyxy ... আপনি কী অক্ষরগুলি বুঝতে পারবেন না।
যথাযথতা বাছাই: আপনি যদি ইউটিএফ -8 এনকোডেড অক্ষরগুলি সহ তাদের বাইট মান অনুসারে বাছাই করেন তবে সেগুলি স্বয়ংক্রিয়ভাবে তাদের ইউনিকোড মান অনুসারে বাছাই করা হবে।
একক বাইট কোডের সাথে সামঞ্জস্যপূর্ণ: বেশিরভাগ কোড যা একক বাইট মান ধরে নেয় ইউটিএফ -8 এনকোডেড অক্ষরগুলির সাথে স্বয়ংক্রিয়ভাবে সঠিকভাবে কাজ করে।
প্লাস যাই হোক না কেন কারণ আমি ভুলে গেছি।