যদি ইউটিএফ -8 8 বিট হয়, তবে এর অর্থ এই নয় যে কেবলমাত্র সর্বোচ্চ 256 টি আলাদা অক্ষর থাকতে পারে?
প্রথম 128 কোড পয়েন্টগুলি ASCII এর মতো। তবে এটি বলেছে ইউটিএফ -8 মিলিয়ন অবধি চরিত্রকে সমর্থন করতে পারে?
কিভাবে কাজ করে?
যদি ইউটিএফ -8 8 বিট হয়, তবে এর অর্থ এই নয় যে কেবলমাত্র সর্বোচ্চ 256 টি আলাদা অক্ষর থাকতে পারে?
প্রথম 128 কোড পয়েন্টগুলি ASCII এর মতো। তবে এটি বলেছে ইউটিএফ -8 মিলিয়ন অবধি চরিত্রকে সমর্থন করতে পারে?
কিভাবে কাজ করে?
উত্তর:
ইউটিএফ -8 সারাক্ষণ একটি বাইট ব্যবহার করে না, এটি 1 থেকে 4 বাইট।
প্রথম 128 টি অক্ষরের (ইউএস-এএসসিআইআই) একটি বাইট দরকার।
পরবর্তী 1,920 টি অক্ষর এনকোড করতে দুটি বাইট প্রয়োজন। এটি প্রায় সমস্ত লাতিন বর্ণমালা এবং গ্রীক, সিরিলিক, কপটিক, আর্মেনিয়ান, হিব্রু, আরবি, সিরিয়াক এবং টানা বর্ণমালা এবং পাশাপাশি ডায়াক্রিটিকাল চিহ্নগুলির সংমিশ্রণকে অন্তর্ভুক্ত করে।
বাকী বেসিক বহুভাষিক প্লেনের অক্ষরের জন্য তিনটি বাইটের প্রয়োজন হয়, এতে বেশিরভাগ চীনা, জাপানি এবং কোরিয়ান [সিজেকে] অক্ষর সহ সাধারণ ব্যবহারে কার্যত সমস্ত অক্ষর [12] থাকে।
ইউনিকোডের অন্যান্য প্লেনে অক্ষরের জন্য চারটি বাইটের প্রয়োজন রয়েছে, যার মধ্যে কম সাধারণ সিজেকে অক্ষর, বিভিন্ন historicতিহাসিক স্ক্রিপ্ট, গাণিতিক চিহ্ন এবং ইমোজি (চিত্রের প্রতীক) অন্তর্ভুক্ত রয়েছে।
উত্স: উইকিপিডিয়া
ইউটিএফ -8 প্রতি চরিত্রের জন্য 1-4 বাইট ব্যবহার করে: এসকিআই অক্ষরের জন্য একটি বাইট (প্রথম 128 ইউনিকোড মানগুলি এসকিআইয়ের সমান)। তবে এর জন্য কেবল 7 বিট প্রয়োজন। যদি সর্বোচ্চ ("চিহ্ন") বিট সেট করা থাকে তবে এটি একটি বহু-বাইট ক্রমের সূচনা নির্দেশ করে; একটানা উচ্চ বিট সেট সংখ্যা বাইট সংখ্যা, তারপর একটি 0, এবং বাকী বিট মান মান অবদান নির্দেশ করে। অন্যান্য বাইটের জন্য, সর্বোচ্চ দুটি বিট হবে 1 এবং 0 এবং বাকী 6 বিট মানটির জন্য।
সুতরাং একটি চার বাইট অনুক্রম 11110 দিয়ে শুরু হবে ... (এবং ... = মানটির জন্য তিন বিট) তারপরে তিনটি বাইটের সাথে প্রতিটি 6 টি বিট মান সহ 21 টি বিট মান দেয়। 2 ^ 21 ইউনিকোড অক্ষরের সংখ্যা ছাড়িয়ে গেছে, তাই ইউনিকোডের সমস্তটি ইউটিএফ 8-তে প্রকাশ করা যেতে পারে।
এই টেবিল অনুযায়ী * ইউটিএফ -8 সমর্থন করা উচিত :
2 31 = 2,147,483,648 টি অক্ষর
তবে, আরএফসি 3629 সম্ভাব্য মানগুলিকে সীমাবদ্ধ করেছে, সুতরাং এখন আমরা 4 বাইটে ক্যাপড করেছি , যা আমাদের দেয়
2 21 = 2,097,152 টি অক্ষর
নোট করুন যে এই অক্ষরগুলির একটি ভাল অংশ কাস্টম ব্যবহারের জন্য "সংরক্ষিত" রয়েছে, যা আসলে আইকন-ফন্টগুলির জন্য বেশ কার্যকর।
* উইকিপিডিয়ায় 6 বাইট সহ একটি টেবিল প্রদর্শন করা হয়েছে - তারা নিবন্ধটি আপডেট করেছে।
2017-07-11: একাধিক বাইট সহ এনকোড করা একই কোড পয়েন্টটিকে দ্বিগুণ গণনা করার জন্য সংশোধন করা হয়েছে
0xxxxxxx
7 টি ব্যবহারযোগ্য বিট 110xxxxx 10xxxxxx
দেয় , আরও 11 দেয় - কোনও ওভারল্যাপ নেই। প্রথম বাইট 0
প্রথম ক্ষেত্রে শুরু হয় , এবং 1
দ্বিতীয় ক্ষেত্রে in
00000001
সংরক্ষণ করে এবং কোনটি 11000000 100000001
সঞ্চয় করে?
ইউনিকোড অক্ষরের কোড পয়েন্টগুলি সমাধান করে। ইউটিএফ -8 ইউনিকোডের স্টোরেজ মেকানিজম। ইউনিকোডে একটি অনুমান রয়েছে। ইউটিএফ -8 একটি অনুমান আছে। তাদের উভয়েরই আলাদা সীমা রয়েছে। ইউটিএফ -8 এর আলাদা wardsর্ধ্বমুখী রয়েছে।
ইউনিকোডকে "প্লেন" দিয়ে মনোনীত করা হয়েছে । প্রতিটি বিমান 2 16 কোড পয়েন্ট বহন করে । ইউনিকোডে 17 টি প্লেন রয়েছে। মোট 17 * 2^16
কোড পয়েন্টের জন্য। প্রথম প্লেনে, সমতল 0 বা বিএমপি , এটা কি বহন করে এর ওজন বিশেষ।
সমস্ত সংক্ষিপ্ত বিবরণ ব্যাখ্যা করার পরিবর্তে, আমাকে কেবল প্লেনগুলির উপরের নিবন্ধটি উদ্ধৃত করি।
17 টি বিমান 1,114,112 কোড পয়েন্টের সমন্বয় করতে পারে। এর মধ্যে ২,০৪৮ জন সরোগেট, non 66 জন নন-চরিত্রের, এবং ১৩7,৪68। জন সরকারী নিয়োগের জন্য 974,530 রেখে ব্যক্তিগত ব্যবহারের জন্য সংরক্ষিত রয়েছে।
এবার উপরের লিঙ্কে ফিরে যাওয়া যাক,
ইউটিএফ -8 দ্বারা ব্যবহৃত এনকোডিং স্কিমটি 2 31 কোড পয়েন্টের (32,768 প্লেন) অনেক বড় সীমা দ্বারা ডিজাইন করা হয়েছিল এবং 4 বাইটের মধ্যে সীমাবদ্ধ থাকলেও 2 21 কোড পয়েন্ট (32 প্লেন) এনকোড করতে পারে [[3] যেহেতু ইউনিকোডটি ইউটিএফ -16 দ্বারা এনকোড করা যায় এমন 17 টি প্লেনের কোড পয়েন্ট সীমাবদ্ধ করে, 0x10FFFF এর উপরে কোড পয়েন্টগুলি ইউটিএফ -8 এবং ইউটিএফ -32 এ অবৈধ।
সুতরাং আপনি দেখতে পাচ্ছেন যে আপনি ইউটিএফ -8 এ এমন স্টাফ রাখতে পারেন যা বৈধ ইউনিকোড নয়। কেন? কারণ ইউটিএফ -8 এমন কোড পয়েন্টগুলিকে সংযুক্ত করে যা ইউনিকোড এমনকি সমর্থন করে না।
ইউটিএফ -8, এমনকি একটি চার বাইট সীমাবদ্ধতা সহ, ২ 21 কোড পয়েন্ট সমর্থন করে , যা এর চেয়ে অনেক বেশি17 * 2^16
2,164,864 "অক্ষরগুলি" ইউটিএফ -8 দ্বারা সম্ভাব্যভাবে কোড করা যেতে পারে।
এই নম্বরটি , যা এনকোডিংয়ের কাজ থেকে আসে:27 + 211 + 216 + 221
1-বাইট 0xxxxxxx
চরগুলিতে এনকোডিংয়ের জন্য 7 টি বিট রয়েছে
(0x00-0x7F)
2-বাইট 110xxxxx 10xxxxxx
চরগুলিতে এনকোডিংয়ের জন্য 11 টি বিট রয়েছে
(প্রথম বাইটের জন্য 0xC0-0xDF; দ্বিতীয়টির জন্য 0x80-0xBF)
3-বাইট 1110xxxx 10xxxxxx 10xxxxxx
চরগুলিতে এনকোডিংয়ের জন্য 16 টি বিট থাকে
(প্রথম বাইটের জন্য 0xE0-0xEF; ধারাবাহিকতা বাইটগুলির জন্য 0x80-0xBF)
4-বাইট 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
চরগুলিতে এনকোডিংয়ের জন্য 21 টি বিট থাকে
(প্রথম বাইটের জন্য 0xF0-0xF7; ধারাবাহিকতা বাইটগুলির জন্য 0x80-0xBF)
আপনি দেখতে পাচ্ছেন এটি বর্তমান ইউনিকোডের (1,112,064 টি অক্ষর) তুলনায় উল্লেখযোগ্যভাবে বড়।
হালনাগাদ
আমার প্রাথমিক গণনা ভুল কারণ এটি অতিরিক্ত নিয়ম বিবেচনা করে না। আরও তথ্যের জন্য এই উত্তরের মন্তব্য দেখুন।
2^21
গেছে এবং সম্ভব সমস্ত সংমিশ্রণগুলি ভুলে গেছে।
ইউটিএফ -8 হ'ল একটি চরিত্রের জন্য সর্বনিম্ন 8 বিট সহ একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং ।
উচ্চতর কোড পয়েন্ট সহ অক্ষর 32 বিট নিতে হবে
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
প্রকৃত চরিত্রটি এনকোড করার জন্য কেবল 21 বিট ব্যবহার করা যেতে পারে।
উইকিপিডিয়া থেকে উদ্ধৃতি: "ইউটিএফ -8 ইউনিকোড অক্ষরটিতে 1,112,064 কোড পয়েন্টের প্রতিটি এনকোড করে এক থেকে চার 8-বিট বাইট (ইউনিকোড স্ট্যান্ডার্ডে" অক্টেটস "হিসাবে চিহ্নিত) ব্যবহার করে।"
কিছু লিঙ্ক:
ইউনিকোড স্ট্যান্ডার্ড এবং সম্পর্কিত তথ্য যেমন তাদের FAQ এন্ট্রি, UTF-8 UTF-16, UTF-32 এবং BOM দেখুন । এটি কোনও মসৃণ নৌযান নয়, তবে এটি অনুমোদনযোগ্য তথ্য এবং আপনি ইউটিএফ -8 সম্পর্কে অন্য কোথাও যা পড়তে পারেন তার বেশিরভাগই সন্দেহজনক।
"ইউটিএফ -8" এর "8" কোড ইউনিটের দৈর্ঘ্যের সাথে সম্পর্কিত বিটের । কোড ইউনিটগুলি হ'ল অক্ষরগুলিকে এনকোড করার জন্য সত্তা ব্যবহৃত হয়, সাধারণ এক-টু ওয়ান ম্যাপিং হিসাবে অগত্যা নয়। UTF-8 একটি অক্ষর এনকোড করতে কোড ইউনিটের একটি চলক সংখ্যার ব্যবহার করে।
ইউটিএফ -8 এ এনকোড করা যায় এমন অক্ষরগুলির সংগ্রহটি ইউটিএফ -16 বা ইউটিএফ -32, যেমন সমস্ত ইউনিকোড অক্ষর হিসাবে একই। এগুলি সমস্ত গোটা ইউনিকোড কোডিং স্পেসকে এনকোড করে, এতে ননচার্যাক্টর এবং আনসাইন না হওয়া কোড পয়েন্টও অন্তর্ভুক্ত থাকে।
যদিও আমি বর্তমান সর্বাধিক ইউটিএফ -8 কোডগুলিতে (2,164,864) এমপেনের সাথে একমত (যদিও নীচে তালিকাভুক্ত করা হয়েছে, আমি তার বিষয়ে মন্তব্য করতে পারিনি), আপনি যদি ইউটিএফ -8 এর 2 টি বড় বিধিনিষেধ অপসারণ করেন তবে তিনি 2 স্তরের দ্বারা বন্ধ আছেন: মাত্র 4 বাইট সীমা এবং কোড 254 এবং 255 ব্যবহার করা যাবে না (তিনি কেবল 4 বাইট সীমাটি সরিয়ে দিয়েছেন)।
শুরুর কোড 254 বিট (মাল্টি-বিট পতাকা সেট 1, 6 1 এর একটি গণনা, এবং টার্মিনাল 0, কোনও অতিরিক্ত বিট নেই) শুরু করার প্রাথমিক ব্যবস্থা অনুসরণ করে আপনাকে 6 টি অতিরিক্ত বাইটস (6 10 xxxxxxx গ্রুপ, অতিরিক্ত 2 work) দিয়ে কাজ করার জন্য দেয় 36 কোড)।
255 শুরুর কোডটি বেসিক সেটআপটি সঠিকভাবে অনুসরণ করে না, 0 টার্মিনাল নেই তবে সমস্ত বিট ব্যবহার করা হয়, আপনাকে 7 অতিরিক্ত বাইট দেয় (মাল্টি-বিট পতাকা সেট 1, 7 1 এর একটি গণনা, এবং কোনও টার্মিনাল 0 নেই কারণ সমস্ত বিট ব্যবহৃত হয় ; 7 10XXXX গ্রুপ, অতিরিক্ত 2 ^ 42 কোড)।
এগুলিকে যুক্ত করা 4,468,982,745,216 এর একটি চূড়ান্ত সর্বোচ্চ উপস্থাপনযোগ্য চরিত্র সেট দেয়। এটি বর্তমান ব্যবহারের সমস্ত অক্ষর, পুরানো বা মৃত ভাষা এবং বিশ্বাসযোগ্য হারানো ভাষার চেয়ে বেশি। অ্যাঞ্জেলিক বা আকাশচুম্বী লিপি কেউ?
এছাড়াও এমন একক বাইট কোড রয়েছে যা ইউটিএফ -8 স্ট্যান্ডার্ডে 254 এবং 255: 128-191 এবং অন্য কয়েকটি ছাড়াও উপেক্ষা / উপেক্ষা করা হয়। কিছু স্থানীয়ভাবে কীবোর্ড দ্বারা ব্যবহৃত হয়, উদাহরণস্বরূপ কোড 128 সাধারণত একটি মোছা ব্যাকস্পেস হয়। অন্যান্য শুরুর কোডগুলি (এবং সম্পর্কিত ব্যাপ্তিগুলি) এক বা একাধিক কারণে ( https://en.wikedia.org/wiki/UTF-8#In अवैध_byte_sequences) অবৈধ ।
ইউনিকোড দৃ U়ভাবে ইউটিএফ -8 এ বিবাহিত। ইউনিকোড বিশেষত 2 ^ 21 কোড পয়েন্টগুলি (2,097,152 টি অক্ষর) সমর্থন করে যা ইউটিএফ -8 দ্বারা সমর্থিত কোড পয়েন্টের ঠিক একই সংখ্যা। উভয় সিস্টেমে কোড পয়েন্ট ইত্যাদির জন্য একই 'মৃত' স্থান এবং সীমাবদ্ধ অঞ্চলগুলি সংরক্ষণ করে ... জুন ২০১ 2018 পর্যন্ত সর্বাধিক সাম্প্রতিক সংস্করণ, ইউনিকোড ১১.০-এ রয়েছে ১৩43,,৩9 অক্ষরের একটি পুস্তক
ইউনিকোড স্ট্যান্ডার্ড থেকে। ইউনিকোড FAQ
ইউনিকোড স্ট্যান্ডার্ডটি ইউ +0000..U + 10FFFF পরিসরে অক্ষরগুলি এনকোড করে, যা 21-বিট কোড স্পেসের সমান।
ইউটিএফ -8 উইকিপিডিয়া পৃষ্ঠা থেকে। ইউটিএফ -8 বর্ণনা
2003 সালে ইউনিকোড কোড-স্পেস 21-বিট মানগুলিতে সীমাবদ্ধ হওয়ার পরে, ইউটিএফ -8 সংজ্ঞা দেওয়া হয়েছে কোড পয়েন্টগুলি এক থেকে চার বাইটে এনকোড করার জন্য, ...