কেন একাধিক ইউনিকোড এনকোডিং রয়েছে?


41

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

তাহলে কেন এত ইউনিকোড এনকোডিং রয়েছে? এমনকি ইউটিএফ -8, ইউটিএফ -16 ইত্যাদি ইত্যাদির একাধিক সংস্করণ (মূলত)


11
ইউটিএফ -8 ইউটিএফ -16 এর মতো নয়। পৃথিবীর মতো গ্রহগুলির সাথে আমরা অন্যান্য সৌরজগতের মুখোমুখি হওয়ার সাথে সাথে তালিকাটি বাড়বে।
সেতজমোরা

1
@ জোসেট: আমাদের ইতিমধ্যে ক্লিংগন রয়েছে। বিএমপিতে আমাদের বেশিরভাগ পৃথিবীর ভাষা রয়েছে যার সমভূমিগুলিতে সামান্য স্প্লিজ রয়েছে 1,2। যদি বর্তমান থেরিগুলি সঠিক হয় এবং গ্যালাক্সিতে কেবলমাত্র 42 জন সংবেদনশীল প্রজাতি রয়েছে যেগুলি এমন এক জায়গায় পৌঁছে যায় যেখানে তারা স্থান ভ্রমণ ব্যবহার করতে পারে (সুতরাং প্রথম যোগাযোগের অনুমতি দিন) আমাদের সকল ভাষায় সমস্ত অক্ষর ইউনিকোডে চেপে ধরতে সক্ষম হব (ধরে নিই আমরা প্রসারিত করতে পারি) 21 থেকে 22 বিট পর্যন্ত 64 টি সমতল মঞ্জুরি দিতে)। এমনকি যদি আমরা আকাশে উড়ান অর্জন না করে এমন আদিম প্রজাতিগুলিকে অন্তর্ভুক্ত করতে চাই তবে 10 বিট বাফার স্পেস ছেড়ে যায়।
মার্টিন ইয়র্ক

7
@ কেভিন হু: ইউটিএফ -7,8,16LE, 16 বিই, 32 এলই, 32 বিই। সুতরাং, কমপক্ষে 6 টি সত্যিকারের এনকোডিং রয়েছে। ইউটিএফ -9 এবং ইউটিএফ -18 এপ্রিল ফুল।
এমসাল্টাররা

9
স্ট্যান্ডার্ডগুলি সম্পর্কে ভাল জিনিসটি
হ'ল এগুলির মধ্যে

1
ইউনিকোড এবং এনকোডিংয়ে স্প্লস্কির কী বক্তব্য ছিল তা দেখুন ।
এমপিলেটিয়ার

উত্তর:


29

কারণ লোকেরা প্রতিটি চরিত্রে 21 বিট ব্যয় করতে চায় না। সমস্ত আধুনিক সিস্টেমে এর অর্থ হ'ল অক্ষর অনুসারে তিনটি বাইট ব্যবহার করা হবে, যা লোকেরা অভ্যস্ত ছিল তার চেয়ে তিনগুণ বেশি, তাই তারা ইউনিকোডকে আদৌ গ্রহণ করতে রাজি ছিল না। সমঝোতাগুলি খুঁজে পেতে হয়েছিল: উদাহরণস্বরূপ ইউটিএফ -8 ইংরেজি পাঠ্যের জন্য দুর্দান্ত কারণ লিগ্যাসি ASCII ফাইলগুলিকে মোটেও রূপান্তরিত করা দরকার না তবে এটি ইউরোপীয় ভাষার জন্য কম দরকারী এবং এশিয়ান ভাষার জন্য খুব কম ব্যবহার করা যায় না।

সুতরাং মূলত, হ্যাঁ, আমরা একটি একক ইউনিভার্সাল এনকোডিং পাশাপাশি একটি একক সার্বজনীন চরিত্রের চার্ট সংজ্ঞায়িত করতে পারতাম, তবে বাজার এটি গ্রহণ করত না।


8
+1 দুর্দান্ত উত্তর। সত্যই সত্য বলতে সত্যই এই প্রশ্নটির সত্যই উত্তর দেয়। অন্যান্য সমস্ত উত্তর কীভাবে সমস্ত ইউনিকোড এনকোডিংগুলিতে বাইট আউট দেওয়া হয় সে সম্পর্কে (কমবেশি)।
জেসেক প্রুশিয়া 20'11

Icallyতিহাসিকভাবে এটি মতবিরোধের একটি সহজ বিষয়। যাইহোক, আমি আজ ইউটিএফ -8 ব্যতীত অন্য কোনও কিছুর জন্য খুব বেশি ব্যবহার দেখতে পাচ্ছি না, যখন এমন তাত্ত্বিক পরিস্থিতি রয়েছে যেখানে ইউটিএফ -16 কম স্থান গ্রহণ করবে, এটি কোনও বড় ব্যবধানের দ্বারা নয়, এবং সেগুলি বিরল। আপনি স্থান বাঁচাতে চান এমন সর্বাধিক বিশিষ্ট স্থান হ'ল ওয়েবসাইটগুলির জন্য, তবে সেগুলি এইচটিএমএল কোডগুলিতে পূর্ণ যা ইউটিএফ -8 ব্যবহার করে খুব কম সময়ের মধ্যে রয়েছে। আপনি উদাহরণস্বরূপ Shift JISএকটি জাপানি ওয়েবসাইটকে ইউটিএফ -8 সমতুল্য চেয়ে ছোট তৈরি করতে ব্যবহার করতে পারেন তবে এটি কেবলমাত্র কাজ করে কারণ এটি জাপানিদের জন্য বিশেষত একটি চরসেট।
aaaaaaaaaaaa

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

but it is less useful for European languages, and of little use for Asian languages- এটা ঠিক ভুল। "ইউজফুলনেস" দ্বারা আপনি সংক্ষেপণ বোঝাতে চান? ঠিক আছে, তাহলে ইউটিএফ -8 ইউরোপীয় ভাষার জন্য আরও ভাল সংক্ষেপণ সরবরাহ করে কারণ প্রতিটি পাঠ্যে ফাঁকা এবং বিরাম চিহ্ন রয়েছে যা কেবলমাত্র একটি একক বাইট নেয়।
নিক ভলিনকিন

37

ইউনিকোড হ'ল একটি বিট অক্ষর এনকোডিং স্বতন্ত্রভাবে "কোডপয়েন্টস" বর্ণিত প্রতিটি কোড পয়েন্ট এএ গ্লাইফ (গ্রাফিকাল উপস্থাপনা) দ্বারা প্রতিনিধিত্ব করা হচ্ছে describes

  • একটি বিমানে একটি কোড পয়েন্ট সনাক্ত করতে ব্যবহৃত 16 টি বিট (বেশিরভাগ কোড পয়েন্ট বিমানে 0 থাকে)।
  • বিমানটি সনাক্ত করার জন্য 5 বিট।

সমর্থিত এনকোডিংগুলি হ'ল:

  • UTF-8 (8 বিট মান ব্যবহার করে প্রতিটি পয়েন্ট এনকোড করতে)
  • UTF-16 (16 বিট মান ব্যবহার করে প্রতিটি পয়েন্ট এনকোড করতে)
  • ইউটিএফ -32 (32 বিট মান ব্যবহার করে প্রতিটি পয়েন্ট এনকোড করতে)

তবে আপনি যখন এনকোডিং করবেন তখন তা কী তা বিবেচনা না করে সেগুলি ম্যাপ করে একটি নির্দিষ্ট কোডপয়েন্টে ফিরে আসে যার একই অর্থ রয়েছে (এ কারণেই এটি দুর্দান্ত)।

হল UTF-8

এটি একটি পরিবর্তনশীল আকারের ফর্ম্যাট। যেখানে প্রতিটি কোডপয়েন্টকে 1 থেকে 4 বাইট প্রতিনিধিত্ব করে।

হল UTF-16

এটি একটি পরিবর্তনশীল আকারের ফর্ম্যাট। "বেসিক বহুভাষিক বিমান" (বিএমপি বা প্লেন 0) এর কোড পয়েন্টগুলি 1 একক 16 বিট মান দ্বারা উপস্থাপন করা যেতে পারে। অন্যান্য প্লেনে কোড পয়েন্টগুলি একটি সারোগেট জোড় (2 16 বিট মান) দ্বারা প্রতিনিধিত্ব করা হয়।

হল UTF-32

এটি একটি নির্দিষ্ট আকারের ফর্ম্যাট। সমস্ত কোড পয়েন্ট একক 32 বিট মান দ্বারা প্রতিনিধিত্ব করা হয়।


2
আমি এই উত্তরটিও পছন্দ করি। একটি অনুরূপ লিখছিলেন, কিন্তু এটি একটি পরিষ্কার। আমি আরও যোগ করব যে ইউটিএফ -8 যে ASCII স্ট্রিংগুলি স্বয়ংক্রিয়ভাবে UTF-8 হয় সে ক্ষেত্রেও দরকারী।
কেভিন হু

4
দয়া করে এটি বেসিক বহুভাষিক সমতল , কোনও সমতল নয়
জেএসবি

3
এটি একটি ভাল উত্তর, তবে আমি মনে করি যে এটি এখনও "কেন?" এই প্রশ্নটি উত্থাপন করে, যদিও এই উত্তরটি পুরোপুরিভাবে এতে স্পর্শ করে। বিশদভাবে জানাতে: ইউটিএফ -32 হ'ল ইউনিকোড অক্ষরগুলির এনকোডিংয়ের আরও প্রত্যক্ষ (কিছু সহজ বলে দেবে) পদ্ধতি, তবে এটি প্রতিটি জায়গাতেই 4 বাইট নেয় বলে এটি অনেক বেশি জায়গাও অপচয় করে। ইউটিএফ -8 অনেক বেশি কমপ্যাক্ট এবং পিছন দিকে-এএসসিআইআই-এর সাথে সামঞ্জস্যপূর্ণ, তবে এটি নিয়মিত নয়: একটি চরিত্র এনকোডে 1 থেকে 4 বাইট পর্যন্ত যে কোনও জায়গায় নিতে পারে, এটির সাথে কাজ করা আরও শক্ত করে তোলে। ইউটিএফ -16 হ'ল দু'জনের মধ্যে এক ধরণের হাইব্রিড পদ্ধতির, বেশিরভাগের পক্ষে ভাল এবং বিপরীতে।
মিপাদি

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

2
@ মার্সেল: একটি "কোডপয়েন্ট" হ'ল "কোডপয়েন্ট" একটি নয় character(একাধিক "কোডপয়েন্টস" থেকে একটি চরিত্রটি নির্মিত হতে পারে)। দুটি পদ বিভ্রান্ত করবেন না। তবে আপনি সঠিক "কোডপয়েন্টস" গ্লাইফগুলি উল্লেখ করেন না। একটি গ্লাইফ একটি কোড পয়েন্টের একটি গ্রাফিকাল উপস্থাপনা। একটি সূক্ষ্ম কিন্তু গুরুত্বপূর্ণ পার্থক্য।
মার্টিন ইয়র্ক

25

আমি মনে করি এটি 2 টি ধারণা আলাদা করতে দরকারী:

  1. ইউনিকোড - কোড পয়েন্টে সারা বিশ্ব থেকে অক্ষরের ম্যাপিং।
  2. এনকোডিং - বিট নিদর্শনগুলিতে কোড পয়েন্টের ম্যাপিং (UTF-8, UTF-16, ইত্যাদি)।

ইউটিএফ -8, ইউটিএফ -16 এবং অন্যান্য এনকোডিংগুলির নিজস্ব সুবিধা এবং অসুবিধা রয়েছে। এটি সম্পর্কে উইকিপিডিয়া ভাল পরামর্শ ।


@ জেফএস: কেন এখনও ইউনিকোড থাকলেও যদি তারপরে এখনও এক ডজন বা আরও বেশি আলাদা এনকোডিং হয়ে থাকে যা তারে সবই আলাদা? গ্লোবাল ম্যাপিংয়ের কী কী ব্যবহার রয়েছে এবং তা নিজেই রয়েছে?
ম্যাথু শার্লে

10
@ ম্যাথেজ শার্লে: আপনি এটিকে ভুল দেখছেন। ইউনিকোডে সমস্ত ভাষা থেকে অক্ষর ম্যাপ করে (ক্লিঙ্গন সহ) একটি ইউনিক আইডি (কোডপয়েন্ট)। এনকোডিংগুলি কেবলমাত্র কোড জুড়ে ডিস্কে বা কোনও নেটওয়ার্ক জুড়ে একটি স্ট্রিমকে সংকুচিত করার একটি উপায়। ইউটিএফ এর অর্থ দাঁড়ায় "ইউনিকোডে ট্রান্সপোর্ট ফর্ম্যাট"। আপনার সর্বদা একটি ইউনিকোড কোডপয়েন্টকে 21 বিটের মান হিসাবে ভাবা উচিত। অন্যান্য ফর্ম্যাটগুলির তুলনায় সুবিধাটি হ'ল সমস্ত অক্ষর স্বতন্ত্রভাবে চিহ্নিত হয় এবং ওভারল্যাপ হয় না (ল্যাটিন -১, ল্যাটিন -২ ইত্যাদি)।
মার্টিন ইয়র্ক

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

4
ইউনিকোড হ'ল বিশ্ব বর্ণমালা। ইউটিএফ-এক্স হ'ল এটি কম্পিউটারের মাধ্যমে যেভাবে পরিবহন করা হয়, যেহেতু তারের মাধ্যমে কাগজ চালানো কঠিন।
মেল

1
@ মার্টিন, ক্লিঙ্গন আসলে এটি তৈরি করেনি। টাঙ্গওয়ার বা সিরিথও টলকাইনের এলভেন জিহ্বা লেখার জন্য ব্যবহার করেনি।
ট্রিগ

9

ইউটিএফ -7, ইউটিএফ -8, ইউটিএফ -16 এবং ইউটিএফ -32 কেবলমাত্র অক্ষরের একই কোডিং (কোডপয়েন্ট) এর আলগোরিদিমিক রূপান্তর ফর্ম্যাট । এগুলি অক্ষরের কোডিংয়ের একটি সিস্টেমের এনকোডিং

এগুলি 256 টির চেয়ে বেশি অক্ষরের চেয়ে বড় অক্ষরের সাথে কাজ করার জন্য পূর্ববর্তী পরিকল্পনাগুলির তুলনায় অগ্রগামী এবং পিছিয়ে নেভিগেট করাও অ্যালগরিদমিকভাবে সহজ।

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

আপনার ইউনিকোডের এই রূপান্তর ফর্মগুলির প্রয়োজন হবে কেন? কারণ প্রচুর লিগ্যাসি সিস্টেমগুলি ASCII- রেঞ্জের 7 বিট অক্ষরের অনুক্রম ধরেছিল, সুতরাং আপনার systems বিট পরিষ্কার সমাধান প্রয়োজন সেই সিস্টেমগুলির মাধ্যমে নিরবিচ্ছিন্নভাবে ডেটা পাস করার জন্য, সুতরাং আপনার ইউটিএফ -7 প্রয়োজন। তারপরে আরও অনেক আধুনিক সিস্টেম ছিল যা 8-বিট চরিত্রের সেটগুলি মোকাবেলা করতে পারে তবে নালগুলির সাধারণত তাদের বিশেষ অর্থ ছিল, তাই ইউটিএফ -16 তাদের পক্ষে কাজ করে নি। 2 বাইট ইউনিকোডের পুরো বেসিক বহুভাষিক সমতলটিকে প্রথম অবতরণে এনকোড করতে পারে, সুতরাং ইউসিএস -2 মনে হয় যে সিস্টেমগুলি "গ্রাউন্ড আপ থেকে ইউনিকোড সচেতন" হতে চলেছে (উইন্ডোজ এনটি এবং জাভা ভিএম এর মতো); তারপরে এক্সটেনশনের অতিরিক্ত অক্ষরগুলির প্রয়োজন ছিল, যার ফলশ্রুতিতে ইউনিকোড স্ট্যান্ডার্ড দ্বারা সংরক্ষিত 21 বিট মূল্যমানের এনকোডিংগুলির অ্যালগোরিদমিক রূপান্তর ঘটে এবং সারোগেট যুগল জন্মগ্রহণ করে; এটি ইউটিএফ -16 প্রয়োজন itated আপনার যদি এমন কিছু অ্যাপ্লিকেশন থাকে যেখানে অক্ষরের প্রস্থের ধারাবাহিকতা সঞ্চয়স্থানের দক্ষতার চেয়ে বেশি গুরুত্বপূর্ণ ছিল, ইউটিএফ -32 (একসময় ইউসিএস -4 নামে পরিচিত) একটি বিকল্প ছিল।

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

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


1
বিভিন্ন জেআইএস এবং ইইউসি স্টেট মেশিনগুলি সত্যিই বাজে, এবং দ্বিগুণ তাই যদি আপনি তাদের মধ্যে রূপান্তর নিয়ে কাজ করছেন। ইউনিকোড এটি ব্যাপকভাবে সহজ করে। ইউনিকোড দিয়ে একমাত্র প্রধান সমস্যা হল আপনি করেছি পেয়েছিলাম অক্ষর হিসাবে বাইটের স্টপ চিন্তা জন্য, আপনাকে হওয়া ASCII-ব্যবহার করে আপনি ছোট-অক্ষর-setted উগ্র জাতীয়তাবাদী!
ডোনাল ফেলো

6

ইউনিকোড প্রচুর পরিমাণে বিভিন্ন এনকোডিং থাকার পুরো বিষয়টি আবিষ্কার করার জন্য তৈরি করা হয়নি।

ইউনিকোডটি ব্যবহারের কোড পৃষ্ঠার উপর নির্ভর করে বিভিন্ন সংখ্যা উপস্থাপন করে এমন একটি সংখ্যাটির পুরো সংখ্যাটি ঘুরে দেখার জন্য ডিজাইন করা হয়েছিল। নম্বর 0 - 127 কোনও আনসি কোড পৃষ্ঠাতে একই অক্ষর উপস্থাপন করে। এটিই এএসসিআইআই চার্ট বা চরিত্র সেট হিসাবে পরিচিত। আনসি কোড পৃষ্ঠাগুলিতে, যা 256 টি অক্ষরের জন্য মঞ্জুরি দেয়, 128 - 255 সংখ্যাগুলি বিভিন্ন কোড পৃষ্ঠাগুলিতে বিভিন্ন বর্ণের প্রতিনিধিত্ব করে।

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

  • সংখ্যা $ 57 সমস্ত কোড পৃষ্ঠাগুলিতে একটি মূলধন ডাকে উপস্থাপন করে তবে
  • সংখ্যা $ ইসি কোড পৃষ্ঠা 437 (মার্কিন) -তে অনন্যতার প্রতীক উপস্থাপন করে, তবে কোড পৃষ্ঠা 775 (বাল্টিক) -র একটি "ল্যাটিন স্মার্ট লেটার এন উইথ সিডিল্লা"
  • সেন্ট সাইনটি কোড পৃষ্ঠাতে 439 নম্বরের, তবে কোড পৃষ্ঠা 775 নম্বরে number

ইউনিকোড যা করেছে, তা এই সমস্তটাকে উল্টে ফেলা হয়েছিল। ইউনিকোডে কোনও "পুনরায় ব্যবহার" নেই। প্রতিটি সংখ্যা একটি একক অনন্য চরিত্রকে উপস্থাপন করে। ইউনিকোডে $ 00A2 সংখ্যাটি সেন্ট সাইন এবং সেন্ট চিহ্নটি ইউনিকোড সংজ্ঞায় অন্য কোথাও উপস্থিত হয় না।

তাহলে কেন এত ইউনিকোড এনকোডিং রয়েছে? এমনকি ইউটিএফ -8, ইউটিএফ -16 ইত্যাদি ইত্যাদির একাধিক সংস্করণ (মূলত)

একই এনকোডিংয়ের একাধিক সংস্করণ নেই। একই ইউনিকোড চরিত্র সংজ্ঞা মানচিত্রের একাধিক এনকোডিং রয়েছে এবং ইউনিকোডে বিদ্যমান বিভিন্ন ভাষাগত বিমানের বিভিন্ন ব্যবহারের জন্য স্টোরেজ প্রয়োজনীয়তার জন্য এটি "উদ্ভাবিত" করা হয়েছে।

ইউনিকোড সংজ্ঞায়িত করে (বা সংজ্ঞায়িত করার জায়গা রয়েছে) 4.294.967.295 অনন্য অক্ষর। আপনি যদি কোনও অ্যালগরিদমিক রূপান্তর না করে ডিস্ক / মেমরি স্টোরেজে এগুলি মানচিত্র করতে চান তবে আপনার প্রতি অক্ষর 4 বাইট লাগবে। আপনার যদি সমস্ত ভাষাগত বিমানের অক্ষরগুলি সহ পাঠ্য সংরক্ষণের প্রয়োজন হয়, তবে ইউটিএফ -32 (যা মূলত একটি সরল 1 অক্ষর - ইউনিকোড সংজ্ঞাটির 4 বাইট স্টোরেজ এনকোডিং) সম্ভবত আপনার যা প্রয়োজন।

তবে খুব সহজেই কোনও পাঠ্য সমস্ত ভাষাগত বিমানের অক্ষর ব্যবহার করে। এবং তারপরে অক্ষরে 4 বাইট ব্যবহার করা একটি বড় অপচয় বলে মনে হচ্ছে। বিশেষত আপনি যখন বিবেচনায় রাখেন যে পৃথিবীর বেশিরভাগ ভাষাগুলি বেসিক মাল্টি-ল্যাঙ্গুয়াল প্লেন (বিএমপি) হিসাবে পরিচিত সেই অঞ্চলে সংজ্ঞায়িত করা হয়: ইউনিকোড সংজ্ঞাটির প্রথম 65536 সংখ্যা।

এবং ইউটিএফ -16 যেখানে এসেছিল তা হ'ল আপনি যদি কেবল বিএমপি থেকে অক্ষর ব্যবহার করেন তবে ইউটিএফ -16 অক্ষর প্রতি দুটি বাইট ব্যবহার করে খুব দক্ষতার সাথে এটি সংরক্ষণ করবে। এটি BMP এর বাইরের অক্ষরের জন্য আরও বাইট ব্যবহার করবে। ইউটিএফ -16 এলই (লিটল এন্ডিয়ান) এবং ইউটিএফ -16 বিই (বিগ এন্ডিয়ান) এর মধ্যে পার্থক্যটি কেবল কম্পিউটারের মেমরির মধ্যে নম্বরগুলি কীভাবে উপস্থাপিত হয় (বাইট প্যাটার্ন A0যার অর্থ হেক্স $ এ0 বা অর্থ $ 0 এ) রয়েছে তার কিছু করার আছে।

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

তাই পুনরুদ্ধার:

  • ইউনিকোড হ'ল পৃথিবীর সমস্ত ভাষায় অক্ষরের ম্যাপিং (এবং কিছু ক্লিঙ্গন বুট করার জন্য) এবং তারপরে কিছু (গাণিতিক, সংগীত ইত্যাদি) একটি অনন্য সংখ্যায়।
  • এনকোডিংগুলি পাঠ্যের মধ্যে অক্ষরের "গড় ব্যবহার" হিসাবে দক্ষতার সাথে যথাসম্ভব দক্ষতার সাথে এই অনন্য চরিত্রের মানচিত্রের সংখ্যা ব্যবহার করে পাঠ্যগুলি সঞ্চয় করতে সংজ্ঞায়িত অ্যালগরিদম।

2
"সংখ্যা 0 - 127 কোনও কোড পৃষ্ঠাতে একই অক্ষর উপস্থাপন করে।" - ভাল, যদি না আপনি EBCDIC এর সাথে কথা বলছেন, তবে $57
এক্ষেত্রে

@ এসএমএলটারস: আপনি একেবারে ঠিক বলেছেন। EBCDIC আলাদা (এবং অন্যদের EBCDIC আছে)। আমি অনুমান করি যে আমার মেইনফ্রেমের দিনগুলি আমার পিছনে এত দীর্ঘ যে আমি মনে
রাখিনি

"সংখ্যা 0 - 127 কোনও কোড পৃষ্ঠাতে একই অক্ষর উপস্থাপন করে।" বাইনারিসাইন রাইটিংয়ের মতো এনকোডিংগুলি আসলে রয়েছে যা এএসসিআইআই-এর সুপারসেট নয়। বাইনারিসাইন রাইটিং, আসলে কোনও এএসসিআইআই অক্ষর অন্তর্ভুক্ত করে না।
TRIG

@ টিআরআইজি: এজন্য আমি আমার বক্তব্যটি আনসি কোড পৃষ্ঠাগুলির সম্পর্কে বিশেষভাবে হতে সম্পাদনা করেছি। আপনি
তাজা

হ্যাঁ. আমি আমার মন্তব্য লেখার সময় একটি অতিরিক্ত মন্তব্য এবং একটি পোস্ট আপডেট হয়েছিল। তবুও, বাইনারি সাইন রাইটিং আকর্ষণীয়।
TRIG

2

ইউনিকোড নম্বর এবং অক্ষরের মধ্যে মানচিত্রটি সংজ্ঞায়িত করে। যাইহোক, আপনি যখন কোনও রিসিভারকে কোনও নম্বর প্রেরণ করেন, তখনও আপনাকে সেই সংখ্যাটি কীভাবে উপস্থাপন করা যায় তা নির্ধারণ করতে হবে। এটিই ইউটিএফের জন্য। এটি সংজ্ঞা দেয় যে কীভাবে কোনও বাইট স্ট্রিমে একটি সংখ্যা উপস্থাপন করতে হয় to


2

ইউটিএফ -32 এর পিছনে যুক্তিটি সহজ: এটি ইউনিকোড কোড পয়েন্টগুলির মধ্যে সবচেয়ে সরল উপস্থাপনা। তাহলে কেন ইউটিএফ -32-এ সব কিছু নেই? দুটি প্রধান কারণ:

একটি আকার । ইউটিএফ -32 এর প্রতিটি চরিত্রের জন্য 4 বাইট প্রয়োজন। বেসিক একাধিক ভাষায় কেবল অক্ষর ব্যবহার করে এমন পাঠ্যের জন্য, এটি ইউটিএফ -16 এর দ্বিগুণ স্থান। ইংরেজী পাঠ্যের জন্য, এটি ইউএস-এএসসিআইআইয়ের চেয়ে চারগুণ বেশি জায়গা।

আরও বড় কারণ পিছনের সামঞ্জস্য । "আনঙ্কডবিহীন" ইউটিএফ -32 ব্যতীত প্রতিটি ইউনিকোড এনকোডিং পূর্বের মানের সাথে সামনের সামঞ্জস্যের জন্য ডিজাইন করা হয়েছিল।

  • ইউটিএফ -8: মার্কিন-এএসসিআইআই এর সাথে পিছনের সামঞ্জস্য।
  • ইউটিএফ -১:: ইউসিএস -২ (বিএমপি ছাড়িয়ে প্রসারিত হওয়ার আগে 16-বিট ইউনিকোড) এর সাথে পিছনে সামঞ্জস্যতা।
  • ইউটিএফ -7: নন-8-বিট-ক্লিন মেল সার্ভারের সাথে পিছনে সামঞ্জস্য।
  • GB18030: জিবি 2312 এবং চীনাগুলির জন্য জিবিকে এনকোডিংয়ের সাথে পিছনে সামঞ্জস্য।
  • ইউটিএফ-ইবিসিডিক: ইবিসিডিআইসির বেসিক ল্যাটিন সাবসেটের সাথে পিছনে সামঞ্জস্য।

আমি ভেবেছিলাম ইউনিকোডটি প্রচুর পরিমাণে বিভিন্ন এনকোডিংয়ের পুরো বিষয়টি আবিষ্কার করার জন্য তৈরি করা হয়েছিল

এটা ছিল, এবং এটি করেছে। ইউটিএফ -8, -16, এবং -32 এর মধ্যে রূপান্তর করা অনেক সহজ এবং বিভিন্ন ভাষা এবং বিভিন্ন ওএসের জন্য কয়েকশো আলাদা অক্ষর এনকোডিংয়ের পুরানো সিস্টেমের সাথে ডিলের চেয়ে বেশি ।


1

আপনি জানেন যে একটি জিপ-ফাইল কোনও ফাইলকে অনেক ছোট (বিশেষত পাঠ্য) হতে সংকুচিত করতে পারে এবং তারপরে এটি মূল ফাইলটির একটি অনুলিপি অনুলিপি করতে পারে।

Zip করা অ্যালগরিদম আসলে আছে বিভিন্ন থেকে পছন্দ করে নিন বিভিন্ন বৈশিষ্ট্যের সঙ্গে বিভিন্ন আলগোরিদিম: সঞ্চিত (কোন কম্প্রেশন), সঙ্কুচিত হ্রাসপাপ্ত (পদ্ধতি 1-4), imploded, Tokenizing, deflated, Deflate64, BZIP2, LZMA (EFS), WavPack, PPMd, যেখানে এটি তাত্ত্বিকভাবে তাদের সকলের চেষ্টা করতে পারে এবং সেরা ফলাফলটি বেছে নিতে পারে তবে সাধারণত ডিফল্টের সাথে যেতে পারে।

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


আর্ন: একটি জিপ ফাইলের সাথে পার্থক্যটি হ'ল একটি শিরোনাম রয়েছে যা আপনাকে জানায় যে সংকোচনের ফলে কি কার্যকর। পাঠ্য ফাইল সহ, আমাদের এখনও অনুমান করা দরকার যে আমরা না?
ম্যাথু শার্লে

একটি বিশেষ ক্রম আছে যা ঠিক তা বলে দেয়। ASCII এর সাথে পিছিয়ে সামঞ্জস্যের কারণে এটি alচ্ছিক।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.