কেন "চরসেট" এর অর্থ সাধারণ ব্যবহারে "এনকোডিং" হয়?


10

যে বিষয়টি আমাকে দীর্ঘদিন ধরে বিভ্রান্ত করেছে, তা হ'ল এত বেশি সফটওয়্যার প্রতিশব্দ হিসাবে "চরসেট" এবং "এনকোডিং" শব্দটি ব্যবহার করে।

লোকেরা যখন কোনও ইউনিকোড "এনকোডিং" উল্লেখ করে, তারা সর্বদা ইউনিকোড অক্ষরকে বাইটের ক্রম হিসাবে উপস্থাপনের জন্য একটি নিয়ম হিসাবে বোঝায় - যেমন ASCII, বা UTF-8। এটি যুক্তিসঙ্গত এবং স্বজ্ঞাত বলে মনে হচ্ছে; ধারণাটি হ'ল আপনি নির্দিষ্ট রোলসেটটি ব্যবহার করে এই অক্ষরগুলিকে বাইট হিসাবে "এনকোডিং" করছেন।

যেহেতু এই নিয়মগুলি কখনও কখনও সমস্ত ইউনিকোড চরিত্রের কিছু উপসেট "এনকোড" করার ক্ষমতা সরবরাহ করে, আপনি কল্পনা করতে পারেন যে "অক্ষরগুলির সেট" এর জন্য সংক্ষিপ্ত একটি "চারসেট" - এর অর্থ ইউনিকোড অক্ষরের একটি সেট - কীভাবে কোনও বিবেচনা ছাড়াই how এই অক্ষরগুলি এনকোড করা আছে। একটি এনকোডিং এর ফলে চারসেট বোঝায় (ASCII এর মতো একটি এনকোডিং, যার মধ্যে কেবল 128 টি অক্ষর এনকোডিংয়ের নিয়ম রয়েছে, সেই 128 টি অক্ষরের অক্ষর যুক্ত হবে) তবে একটি অক্ষরকে এনকোডিং বোঝানো দরকার না (উদাহরণস্বরূপ, ইউটিএফ -8, ইউটিএফ) -16 এবং ইউটিএফ -32 সমস্ত পৃথক এনকোডিং তবে একই অক্ষরের সেটটি এনকোড করতে পারে)।

তবুও - এবং এখানে আমার প্রশ্নের সূত্রপাত - "চরসেট" শব্দের বাস্তব-বিশ্বের ব্যবহারের সাথে শব্দটির নির্মাণটি কী বোঝায় তা মেলে না। এটি প্রায়শই "এনকোডিং" অর্থ ব্যবহৃত হয়।

উদাহরণ স্বরূপ:

  • charsetHTML এ অ্যাট্রিবিউট এনকোডিং উল্লেখ করতে ব্যবহৃত হয়
  • Charsetজাভা এ এনকোডিং হয়
  • charsetএস এবং character setsমাইএসকিউএলে আবার একবার এনকোডিং রয়েছে

ভাষার এই কৌতূহলী (অব) ব্যবহার কত বছরের পুরনো, এবং 'চরসেট' এর এই পাল্টা-স্বজ্ঞাত সংজ্ঞাটি কীভাবে বিদ্যমান? এটা সম্ভবত একটি সময় থেকে উদ্ভূত না যখন সত্যিই ছিল , বাস্তবে, ব্যবহারে এনকোডিং এবং অক্ষর সেট মধ্যে একটি একের সাথে এক ম্যাপিং তারা সমর্থিত? বা শব্দের এই সংজ্ঞাটি নির্দিষ্ট করে এমন কিছু প্রভাবশালী মান বা স্পেসিফিকেশন ছিল?


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

2
আপনি চরিত্রের সেটগুলি "ইউনিকোড অক্ষরের একটি সেট" হিসাবে কথা বলছেন, যেন কেউ ইউনিকোড দিয়ে শুরু করেছিলেন এবং তারপরে সাবসেটগুলি বেছে নিলেন। ইউনিকোডের আবিষ্কারের আগে (বা কমপক্ষে ইউনিকোড সর্বব্যাপী হওয়ার আগে) অনেকগুলি চরিত্র সেট বিদ্যমান ছিল তা আরও সঠিক, এবং ইউনিকোডগুলি তাদের সুপারস্টার হিসাবে ইচ্ছাকৃতভাবে নির্মিত হয়েছিল।
জন বার্থোলোমিউ

উত্তর:


3

চরিত্র সেটগুলির ধারণাটি ইউনিকোডের চেয়ে পুরানো।

ইউনিকোডের আগে একটি অক্ষর সেট অক্ষরের একটি সেট নির্ধারণ করে এবং প্রতিটি অক্ষরকে কীভাবে বিট হিসাবে উপস্থাপন করা হয়। বেশিরভাগ অক্ষর সেটগুলি একটি বাইটে একটি অক্ষর ম্যাপ করে (256 বর্ণের সেটকে মঞ্জুরি দেয়), কিছু দুটি বাইটে ম্যাপ করে এবং কয়েকটি (ASCII এর মতো) কেবল 7 বিটকে দেয়। বিভিন্ন অক্ষর সেটগুলি প্রায়শই একই চরিত্রের জন্য বিভিন্ন মান নির্ধারিত হয় এবং বিভিন্ন অক্ষর সেটগুলির মধ্যে কোনও সর্বজনীন অনুবাদ কী নেই।

ইউনিকোড একটি সাধারণ "সুপারসেট" -এ সমস্ত চরিত্রের সেটগুলিকে একত্রিত করে এই সমস্যাটি সমাধান করার চেষ্টা করা হয়েছিল। এই উদ্দেশ্যে ইউনিকোড বিমূর্ততার কিছু অতিরিক্ত স্তর প্রবর্তন করেছে, উদাহরণস্বরূপ, চরিত্রের এনকোডিংগুলির ধারণা কোড পয়েন্টের মানগুলির থেকে পৃথক কিছু। এটি ইউনিকোডকে প্রাক-ইউনিকোড অক্ষর সেটটিকে ইউনিকোড অক্ষর এনকোডিং হিসাবে পুনরায় সংজ্ঞায়িত করার অনুমতি দেয় ।

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


9

"চরসেট" শব্দটি অবশ্যই "চরিত্রের সেট" এর জন্য সংক্ষিপ্ত, যা পরিবর্তিত একটি পুরানো শব্দ যা একটি অক্ষর এনকোডিংয়ের জন্য ব্যবহৃত হয়, যাকে ব্যাখ্যা করা যেতে পারে) বাইট এবং অক্ষরের ক্রমগুলির মধ্যে একটি ম্যাপিং, খ) পূর্ণসংখ্যার মধ্যে একটি ম্যাপিং (কোড নম্বর) এবং অক্ষর বা গ) বিমূর্ত অক্ষর এবং হয় পূর্ণসংখ্যা বা বাইটের ক্রমগুলির মধ্যে একটি ম্যাপিং।

এটি একটি স্বল্প এবং সাধারণ অভিব্যক্তি হওয়ায় "চরিত্র সেট" ব্যবহার করা হয়েছিল। এটিতে, "সেট" এর একটি অস্পষ্ট অর্থ রয়েছে (পুরো ধারণাটি অস্পষ্ট) তবে ড্যান ক্যানলির (একবার) বিখ্যাত চরিত্র সেটটিতে বর্ণিত হিসাবে এটি পরে একটি সংকলন (সেট তাত্ত্বিক অর্থে "সেট") হিসাবে ভুল ব্যাখ্যা করা হয়েছে later ক্ষতিকর বিবেচনা

তারপরে সবচেয়ে বেশি কী গুরুত্বপূর্ণ ছিল তা শনাক্তকারীটি charsetMIME এবং HTTP- তে ব্যবহৃত হয়েছিল। এইচটিটিপি 1.0 ওরফে আরএফসি 1945 মাইম সংজ্ঞাটি উদ্ধৃত করে, "অক্টের ক্রমকে অক্ষরের অনুক্রমে রূপান্তর করতে এক বা একাধিক টেবিলের সাথে ব্যবহৃত একটি পদ্ধতি" এবং তারপরে এই বিভ্রান্তির বিষয়ে মন্তব্য করে: "'অক্ষর সেট" শব্দটির এই ব্যবহারটি আরও বেশি সাধারণত 'চরিত্রের এনকোডিং' হিসাবে পরিচিত। তবে, যেহেতু এইচটিটিপি এবং মাইম একই রেজিস্ট্রি ভাগ করে, তাই পরিভাষাটিও ভাগ করা গুরুত্বপূর্ণ।


1

আরএফসি 2045 "ক্যারেক্টার সেট" মাইমে প্রবর্তন করেছিল এবং ততক্ষণে এটি ইতিমধ্যে পরিষ্কার হয়ে গেছে যে সমস্ত এনকোডিংগুলি একটি অক্ষরে একটি অক্ষর ম্যাপযুক্ত নয়। আরএফসি 2130 এই ইতিহাসটি আরও কিছুটা আলোচনা করে।

মূলত, "চরসেট" একটি জনপ্রিয় শব্দ ছিল যখন সেই মানগুলি লেখা হয়েছিল, এটি "চরিত্রের এনকোডিং" বা "পাঠ্য এনকোডিং স্কিম" এর চেয়ে বেশি সংক্ষিপ্ত এবং "এনকোডিং" এর চেয়ে কম অস্পষ্ট।


এটি আমার কাছে দেখে মনে হচ্ছে 'চরসেট' প্যারামিটারটি ইতিমধ্যে আরএফসি 1341 (জুন 1992) উপস্থিত ছিল ।
জন বার্থোলোমিউ

1

পাঠ্য স্থানান্তর করার জন্য কমপক্ষে 2 টি এনকোডিং রয়েছে। অক্ষর এনকোডিং বর্ণনা করে যে কীভাবে অক্ষরগুলি (গ্লাইফগুলি) এনকোড করা হয়। সমস্ত ভাষা ইউসিএস অক্ষর সেটের একটি উপসেট ব্যবহার করে, যা প্রায়শই 8 বিটের মানতে এনকোড থাকে। স্ট্যান্ডার্ডাইজড ক্যারেক্টার সেটগুলিতে স্ট্যান্ডার্ড ক্যারেক্টার এনকোডিং থাকে এবং শর্তগুলি সাধারণত আন্তঃচেঞ্জযোগ্যভাবে ব্যবহৃত হয়।

স্থানান্তর এনকোডিং বর্ণনা করে যে কীভাবে পাঠ্য স্থানান্তরিত হয় এবং চরিত্রের এনকোডিং থেকে সাধারণত স্বতন্ত্র। বেশিরভাগ স্থানান্তর এনকোডিংগুলি স্বচ্ছ নয় এবং স্থানান্তরিত হওয়া বাইট ক্রমটি পরিবর্তন করে। 8-বিট এনকোডিংয়ের জন্য 8-বিট স্থানান্তর এনকোডিং স্বচ্ছ। 7-বিট স্থানান্তর এনকোডিং কেবলমাত্র 7-বিট অক্ষর সেট যেমন ASCII স্থানান্তর করতে পারে

এএসসিআইআই riage বিটগুলিতে এনকোড করা ক্যারেজ নিয়ন্ত্রণের জন্য 95 টি মুদ্রণযোগ্য অক্ষর এবং আরও কয়েকটি অক্ষর (লাইন ফিড, ফর্ম ফিড, ক্যারিজ রিটার্ন, ব্যাকস্পেস এবং ট্যাব) ব্যবহার করে। বাকি মানগুলি ব্যবহার করে অতিরিক্ত নিয়ন্ত্রণের অক্ষর রয়েছে। এএসসিআইআই হ'ল ইউসিএস অক্ষর সেটগুলির পাশাপাশি একটি 8 টি বিট অক্ষর সেটগুলির একটি উপযুক্ত উপসেট। ISO-8859-1 এছাড়াও ইউসিএস অক্ষর সেটের একটি উপযুক্ত উপসেট, তবে এই অক্ষরগুলির ইউটিএফ -8 এ আলাদা এনকোডিং রয়েছে, যা 127 এর চেয়ে বেশি অক্ষরের মানগুলির জন্য একাধিক বাইট ব্যবহার করে।

আইবিএম মেইনফ্রেমগুলি (ডি) ইবিসিডিআইডি ব্যবহার করে যা একটি পৃথক 8-বিট এনকোডিং ব্যবহার করে। এমন অনুবাদ টেবিল রয়েছে যা ASCII এবং ECBDIC অক্ষর এনকোডিংয়ের মধ্যে মুদ্রণযোগ্য অক্ষরগুলি ম্যাপ করে। ইসিবিডিআইএসির ASCII এর চেয়ে বড় চরিত্র সেট রয়েছে কারণ এর বিরাম চিহ্নগুলি ASCII তে উপলব্ধ নয়। প্রাথমিক এনকোডিং ইসিবিডিআইসি হলে এটি এই দুটি এনকোডিংয়ের মধ্যে পুরো রাউন্ড ট্রিপ রূপান্তরকে বাধা দিতে পারে।

ASCII মুদ্রণযোগ্য অক্ষর দ্বারা আচ্ছাদিত অক্ষরযুক্ত ভাষার জন্য এই এনকোডিং যথেষ্ট ছিল না। মাইক্রোসফ্ট এবং অন্যান্যরা ASCII অক্ষর সেটটিতে 8-বিট এক্সটেনশন ব্যবহার করেছে এবং 127 এর উপরে মান সহ অতিরিক্ত অক্ষরগুলি এনকোড করেছে these সমস্ত ভাষার জন্য একটি একক প্রসারই যথেষ্ট ছিল না কারণ এই এক্সটেনশানগুলি কেবলমাত্র অক্ষর সেটে 96 টি অক্ষর যুক্ত করেছিল। এর ফলে বিভিন্ন 8 টি বিট অক্ষর এনকোডিং সহ বিভিন্ন ভাষার জন্য একাধিক অক্ষর সেট (চরসেট) ব্যবহৃত হচ্ছে। এই অক্ষর সেটগুলির মধ্যে সে ভাষা বা ভাষা পরিবারের জন্য প্রয়োজনীয় অক্ষর অন্তর্ভুক্ত রয়েছে। অতিরিক্ত অক্ষরগুলি বিভিন্ন অক্ষরে বিভিন্ন মানকে এনকোড করা যেতে পারে। ইংরেজী ব্যবহারকারীরা সম্ভবত প্রসারিত বিরামচিহ্ন (বাম এবং ডান কোটেশন চিহ্ন এবং ড্যাশ) দিয়ে এটি লক্ষ্য করতে পারেন যা ভুল অক্ষর সেটটি ব্যবহার করা হলে ভুলভাবে প্রদর্শিত হয়।

একক বাইট এনকোডিংয়ের জন্য অক্ষর সেটটিতে কেবল অক্ষরগুলিই এনকোড করা যায়। কিছু ভাষার অক্ষর সেটটি কভার করতে বহু-বাইট এনকোডিংগুলির প্রয়োজন। ইউনিকোড (ইউসিএস) অক্ষর সেটকে ASCII অক্ষর সেটের বাইরে অক্ষরগুলির জন্য মাল্টি-বাইট এনকোডিংগুলি প্রয়োজন। এই অক্ষর সেটটি সমস্ত ভাষার নির্দিষ্ট এনকোডিংয়ের একটি সুপারসেট। ইউটিএফ -8 হ'ল ইউসিএস অক্ষর সেটটির একটি কমপ্যাক্ট এনকোডিং। এএসসিআইআইয়ের জন্য কোনও অতিরিক্ত বাইটের প্রয়োজন নেই এবং বেশিরভাগ (সমস্ত?) ইউরোপীয় ভাষার অক্ষরগুলি এক বা দুটি বাইট হিসাবে এনকোড করা যায়। সম্পূর্ণ ইউসিএস -২ অক্ষর সেটটি এক থেকে তিন বাইটে এনকোড করা যায়। বর্তমান ইউসিএস অক্ষর সেটটিতে সমস্ত অক্ষর এক থেকে চার বাইটে এনকোড করা যায়।


0

এফডব্লিউআইডাব্লু, আইআইআরসি, কমোডর Back৪ দিনের মধ্যে, একটি অক্ষর সেট {0, ... 255 from থেকে সমস্ত uxv কালো এবং সাদা চিত্রের সেটে ছিল যেখানে আপনার এবং ভি সম্ভবত 8 এবং 12 ছিল। সুতরাং "আপনার পরিবর্তন অক্ষর সেট "এর অর্থ এই চিত্রগুলি ধরে রাখার জন্য মনোনীত মেমরির অবস্থানগুলি পরিবর্তন করতে বেসিক ভাষায় POKE কমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ ASCII কোড 65 এর অর্থ A এবং A এর চিত্রটি মেমরি ঠিকানায় শুরু হয়ে একটি * 65 + b কিছু খের জন্য সংরক্ষণ করা হবে এবং আমি অনুমান করি a = u * v।

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