ইউনিকোড এবং এএসসিআইআইয়ের মধ্যে সঠিক পার্থক্য কী?
এএসসিআইআইয়ের মোট 128 টি অক্ষর রয়েছে (বর্ধিত সেটে 256)।
ইউনিকোড চরিত্রগুলির জন্য কোনও আকারের স্পেসিফিকেশন রয়েছে?
ইউনিকোড এবং এএসসিআইআইয়ের মধ্যে সঠিক পার্থক্য কী?
এএসসিআইআইয়ের মোট 128 টি অক্ষর রয়েছে (বর্ধিত সেটে 256)।
ইউনিকোড চরিত্রগুলির জন্য কোনও আকারের স্পেসিফিকেশন রয়েছে?
উত্তর:
এএসসিআইআই 128 টি অক্ষর সংজ্ঞায়িত করে, যা 0-212 নম্বরে মানচিত্র করে। ইউনিকোড 2 21 টি অক্ষরের সংজ্ঞা দেয় (এর চেয়ে কম) , যা একইভাবে, 0-2 21 সংখ্যাগুলিতে মানচিত্র করে (যদিও সমস্ত নম্বর বর্তমানে নির্ধারিত নয়, এবং কিছু সংরক্ষিত)।
ইউনিকোড এএসসিআইআই-এর একটি সুপারস্টার, এবং ইউনিকোডে 0122 সংখ্যার ASCII তে একই অর্থ রয়েছে। উদাহরণস্বরূপ, 65 নম্বরটির অর্থ "ল্যাটিন রাজধানী 'এ'"।
ইউনিকোডের অক্ষরগুলি সাধারণত একটি 8-বিট বাইটে ফিট করে না, তাই ইউটিএফ -32 এবং ইউটিএফ -8 এর মতো বাইট সিকোয়েন্সগুলিতে ইউনিকোড অক্ষর সংরক্ষণ করার বিভিন্ন উপায় রয়েছে।
বোঝাপড়া কেন ASCII এবং ইউনিকোড প্রথম স্থানে তৈরি করা হয়েছিল আমাকে দুই মধ্যে পার্থক্য বুঝতে সাহায্য করেছে।
এএসসিআইআই, উত্স
অন্যান্য উত্তরে বর্ণিত হিসাবে, ASCII একটি চরিত্র উপস্থাপন করতে 7 বিট ব্যবহার করে। 7 বিট ব্যবহার করে, আমরা 2 ^ 7 (= 128) স্বতন্ত্র সমন্বয় সর্বোচ্চ থাকতে পারে * । যার অর্থ আমরা সর্বোচ্চ 128 টি অক্ষর উপস্থাপন করতে পারি।
অপেক্ষা করুন, 7 বিট? তবে 1 বাইট (8 বিট) কেন নয়?
প্যারিটি বিট হিসাবে ত্রুটিগুলি এড়ানোর জন্য শেষ বিট (অষ্টম) ব্যবহার করা হয় । এটি বছর আগে প্রাসঙ্গিক ছিল।
বেশিরভাগ এএসসিআইআই অক্ষরগুলি হ'ল অক্ষরগুলির মুদ্রণযোগ্য অক্ষর যেমন অ্যাবসি, এবিসি, 123,? এবং !, ইত্যাদি others অন্যরা নিয়ন্ত্রণের অক্ষর যেমন ক্যারেজ রিটার্ন, লাইন ফিড , ট্যাব ইত্যাদি control
ASCII- এ কয়েকটি অক্ষরের বাইনারি উপস্থাপনা নীচে দেখুন:
0100101 -> % (Percent Sign - 37)
1000001 -> A (Capital letter A - 65)
1000010 -> B (Capital letter B - 66)
1000011 -> C (Capital letter C - 67)
0001101 -> Carriage Return (13)
এখানে সম্পূর্ণ ASCII টেবিলটি দেখুন ।
এএসসিআইআই শুধুমাত্র ইংরেজির জন্যই বোঝানো হয়েছিল।
কি? শুধু ইংরাজী কেন? সেখানে অনেক ভাষা আছে!
কারণ কম্পিউটার শিল্পের কেন্দ্রটি তখন মার্কিন যুক্তরাষ্ট্রে ছিল। ফলস্বরূপ, তাদের উচ্চারণ বা marks, ü, ç, ñ, ইত্যাদির মতো অন্যান্য চিহ্নগুলি সমর্থন করার প্রয়োজন ছিল না (ওরফে ডায়াক্রিটিক্স )।
এএসসিআইআই প্রসারিত
কিছু বুদ্ধিমান লোক তাদের ভাষাকে সমর্থন করার জন্য আরও অক্ষরগুলি এনকোড করার জন্য অষ্টম বিট (প্যারিটির জন্য ব্যবহৃত বিট) ব্যবহার শুরু করেছিল (উদাহরণস্বরূপ, ফরাসি ভাষায়, "é" সমর্থন করার জন্য) কেবলমাত্র একটি অতিরিক্ত বিট ব্যবহার করে 256 টি অক্ষর (2 ^ 8 = 256 টি অক্ষর) পর্যন্ত মানচিত্রের জন্য মূল ASCII টেবিলের আকার দ্বিগুণ করা হয়েছে। এবং আগের হিসাবে 2 ^ 7 নয় (128)।
10000010 -> é (e with acute accent - 130)
10100000 -> á (a with acute accent - 160)
এই "এএসসিআইআই এর নামটি 8 টি বিট পর্যন্ত প্রসারিত এবং আগের তুলনায় 7 বিট নয়" কেবল "বর্ধিত এএসসিআইআই" বা "8-বিট এএসসিআইআই" হিসাবে উল্লেখ করা যেতে পারে।
হিসাবে @Tom তার মন্তব্যে উল্লেখ নিচে সেখানে "যেমন জিনিস হয় বর্ধিত হওয়া ASCII " এখনো এই একটি সহজ উপায় এই 8th-বিট কৌতুক পড়ুন হয়। 8-বিট ASCII টেবিলের অনেকগুলি প্রকরণ রয়েছে, উদাহরণস্বরূপ, আইএসও 8859-1, এটি আইএসও ল্যাটিন -১ নামে পরিচিত ।
ইউনিকোড, দ্য রাইজ
এএসসিআইআই প্রসারিত ভাষা ল্যাটিন বর্ণমালার উপর ভিত্তি করে সমস্যাগুলির সমাধান করে ... অন্যদের সম্পর্কে কী সম্পূর্ণ আলাদা বর্ণমালা প্রয়োজন? গ্রিক? রাশিয়ান? চাইনিজ আর পছন্দ?
আমাদের সম্পূর্ণ নতুন চরিত্রের সেট দরকার ছিল ... এটি ইউনিকোডের পিছনে যুক্তিযুক্ত। ইউনিকোডে প্রতিটি ভাষা থেকে প্রতিটি অক্ষর থাকে না তবে এটিতে অবশ্যই বিশাল আকারের অক্ষর রয়েছে ( এই টেবিলটি দেখুন )।
আপনি আপনার হার্ড ড্রাইভে "ইউনিকোড" হিসাবে পাঠ্য সংরক্ষণ করতে পারবেন না। ইউনিকোড পাঠ্যের একটি বিমূর্ত উপস্থাপনা। আপনাকে এই বিমূর্ত প্রতিনিধিত্ব "এনকোড" করতে হবে। এইখানেই একটি এনকোডিং খেলতে আসে।
এনকোডিংস: ইউটিএফ -8 বনাম ইউটিএফ -16 বনাম ইউটিএফ -32
এই উত্তরটি বেসিকগুলি ব্যাখ্যা করার জন্য বেশ ভাল কাজ করে:
UTF-8 প্রথম 128 টি অক্ষরের জন্য ASCII সেট ব্যবহার করে। এটি সুবিধাজনক কারণ এর অর্থ ASCII পাঠ্যটি ইউটিএফ -8 এও বৈধ।
স্মৃতিবর্ধনবিদ্যা:
বিঃদ্রঃ:
2 ^ 7 কেন?
এটি কারওর জন্য সুস্পষ্ট, তবে কেবল ক্ষেত্রে। আমাদের সাতটি স্লট রয়েছে যা 0 বা 1 ( বাইনারি কোড ) দিয়ে পূর্ণ। প্রত্যেকের দুটি সমন্বয় থাকতে পারে। আমাদের যদি সাতটি দাগ থাকে তবে আমাদের কাছে 2 * 2 * 2 * 2 * 2 * 2 * 2 = 2 ^ 7 = 128 সংমিশ্রণ রয়েছে। সাতটি চাকাযুক্ত সমন্বয় লক হিসাবে এটি সম্পর্কে চিন্তা করুন, প্রতিটি চাকাতে দুটি সংখ্যা রয়েছে।
উত্স: উইকিপিডিয়া , এই দুর্দান্ত ব্লগ পোস্ট এবং মকি যেখানে আমি প্রাথমিকভাবে এই সারাংশ পোস্ট করেছি।
ASCII এর 128 কোড পয়েন্ট রয়েছে, 0 থেকে 127 পর্যন্ত It এটি একটি একক 8-বিট বাইটে ফিট করতে পারে, 128 থেকে 255 এর মধ্যে মানগুলি অন্যান্য অক্ষরের জন্য ব্যবহৃত হতে থাকে। কোড পৃষ্ঠা দুর্যোগের কারণ হিসাবে বেমানান পছন্দগুলির সাথে । একটি কোড পৃষ্ঠাতে এনকোড করা পাঠ্য কোনও প্রোগ্রামের দ্বারা সঠিকভাবে পড়তে পারে না যা ধরে নিয়েছে বা অন্য কোড পৃষ্ঠাতে অনুমান করা হয়েছে।
ইউনিকোড এই বিপর্যয় সমাধান করতে এসেছিল। সংস্করণ 1 65536 কোড পয়েন্ট দিয়ে শুরু হয়েছিল, সাধারণত 16 বিটে এনকোড করা হয়। পরে সংস্করণ 2 থেকে 1.1 মিলিয়ন কোড পয়েন্টে প্রসারিত। বর্তমান সংস্করণটি .3.৩, উপলব্ধ ১.১ মিলিয়ন কোড পয়েন্টের ১১০,১77 ব্যবহার করে। এটি আর 16 বিটে ফিট করে না।
মাইক্রোসফ্ট এবং অ্যাপল অপারেটিং সিস্টেমগুলি উদাহরণস্বরূপ, যখন ভি 2 ঘনিয়ে আসে তখন 16-বিটগুলিতে এনকোডিং সাধারণ ছিল। এবং জাভা মত ভাষা রানটাইম। ভি 2 স্পেসটি সেই 1.1 মিলিয়ন কোড পয়েন্টগুলিকে 16-বিটগুলিতে ম্যাপ করার একটি উপায় নিয়ে আসে। ইউটিএফ -16 নামক একটি এনকোডিং, একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং যেখানে একটি কোড পয়েন্ট 2 বা 4 বাইট নিতে পারে। আসল ভি 1 কোড পয়েন্ট 2 বাইট নেয়, যোগগুলি 4 নেয়।
আর একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং যা খুব সাধারণ, * নিক্স অপারেটিং সিস্টেম এবং সরঞ্জামগুলিতে ব্যবহৃত হয় ইউটিএফ -8, একটি কোড পয়েন্টটি 1 থেকে 4 বাইটের মধ্যে নিতে পারে, আসল এএসসিআইআই কোডগুলিতে 1 বাইট নিতে বাকী বেশি লাগে। কেবলমাত্র অ-পরিবর্তনশীল দৈর্ঘ্যের এনকোডিংটি ইউটিএফ -32, কোড পয়েন্টের জন্য 4 বাইট নেয়। এটি বেশ অপচয় হিসাবে প্রায়শই ব্যবহৃত হয় না। ইউটিএফ -1 এবং ইউটিএফ -7 এর মতো অন্যান্য রয়েছে, যা ব্যাপকভাবে উপেক্ষা করা হয়েছে।
ইউটিএফ -16 / 32 এনকোডিংগুলির সাথে একটি সমস্যা হ'ল বাইটগুলির ক্রমটি মেশিনের এন্ডিয়ান-নেসের উপর নির্ভর করবে যা পাঠ্য স্ট্রিম তৈরি করেছে। সুতরাং UTF-16BE, UTF-16LE, UTF-32BE এবং UTF-32LE মিশ্রণটি যুক্ত করুন।
এই বিভিন্ন এনকোডিং পছন্দগুলি থাকা প্রোগ্রামের মধ্যে উত্তপ্ত বিতর্কের পাশাপাশি ইউটিএফ পছন্দটি "সেরা" বলে কিছুটা কোড কোড বিপর্যয় ফিরিয়ে আনে। অপারেটিং সিস্টেমের সাথে তাদের সংযোগের ফলে লাইনগুলি খুব বেশি ডিফল্ট হয়। একটি পাল্টা-পরিমাপ হ'ল একটি বিওএম সংজ্ঞা, বাইট অর্ডার মার্ক, একটি পাঠ্য প্রবাহের শুরুতে একটি বিশেষ কোডপয়েন্ট (ইউ + এফএফএফ, শূন্য প্রস্থের স্থান) যা বাকী প্রবাহকে কীভাবে এনকোড করা হয়েছে তা নির্দেশ করে। এটি ইউটিএফ এনকোডিং এবং শেষের দিক উভয়ই নির্দেশ করে এবং একটি পাঠ্য রেন্ডারিং ইঞ্জিনের সাথে নিরপেক্ষ। দুর্ভাগ্যক্রমে এটি isচ্ছিক এবং অনেক প্রোগ্রামাররা এটিকে বাদ দেওয়ার জন্য তাদের অধিকার দাবি করে যাতে দুর্ঘটনাগুলি এখনও বেশ সাধারণ।
জাভা ইউনিকোডের জন্য সমর্থন সরবরাহ করে অর্থাৎ এটি সমস্ত বিশ্বব্যাপী বর্ণমালা সমর্থন করে। সুতরাং জাভাতে চরের আকার 2 বাইট। এবং পরিসীমা 0 থেকে 65535।
ASCII এর 128 কোড অবস্থান রয়েছে, যা গ্রাফিক অক্ষর এবং নিয়ন্ত্রণের অক্ষরগুলিকে বরাদ্দ করা হয় (নিয়ন্ত্রণ কোড)।
ইউনিকোডে 1,114,112 কোড অবস্থান রয়েছে। এর মধ্যে প্রায় ১,০০,০০০ বর্তমানে অক্ষরগুলিতে বরাদ্দ করা হয়েছে এবং অনেকগুলি কোড পয়েন্ট স্থায়ীভাবে ননচ্যাকার্স (যেমন কোনও অক্ষরকে এনকোড করার জন্য ব্যবহৃত হয় না) করা হয়েছে এবং বেশিরভাগ কোড পয়েন্ট এখনও নির্ধারিত হয়নি।
কেবলমাত্র ASCII এবং ইউনিকোডের মধ্যে যে জিনিসগুলির মধ্যে মিল রয়েছে তা হ'ল : 1) এগুলি চরিত্রের কোড। 2) ইউনিকোডের 128 প্রথম কোড অবস্থানগুলি ASCII এর মতো একই অর্থ হিসাবে সংজ্ঞায়িত করা হয়েছে, ব্যতীত ASCII নিয়ন্ত্রণ অক্ষরের কোড পজিশনগুলি কেবল ASCII নামগুলির সাথে সম্পর্কিত নামগুলি সহ নিয়ন্ত্রণের অক্ষর হিসাবে সংজ্ঞায়িত করা হয় তবে তাদের অর্থগুলি হ'ল ইউনিকোডে সংজ্ঞায়িত হয়নি।
কখনও কখনও, তবে ইউনিকোডকে "বিস্তৃত ASCII" হিসাবে চিহ্নিত করা হয় (এমনকি ইউনিকোড স্ট্যান্ডার্ডেও)! এটি একটি স্লোগান যা মূলত এই ধারণাটি বোঝানোর চেষ্টা করে যে ইউনিকোডকে সর্বজনীন চরিত্রের কোড হিসাবে বোঝানো হয়েছিল ঠিক একইভাবে ASCII যেমন ছিল (যদিও ASCII এর চরিত্রের প্রতিপত্তিটি সর্বজনীন ব্যবহারের জন্য আশাহীনভাবে অপর্যাপ্ত ছিল), বিভিন্ন কোড ব্যবহার করার বিপরীতে বিভিন্ন সিস্টেম এবং অ্যাপ্লিকেশন এবং বিভিন্ন ভাষার জন্য।
ইউনিকোড যেমন অক্ষরের কেবলমাত্র "লজিক্যাল আকার" সংজ্ঞা দেয়: প্রতিটি বর্ণের একটি নির্দিষ্ট পরিসরে একটি কোড নম্বর থাকে। এই কোড নম্বরগুলি বিভিন্ন স্থানান্তর এনকোডিংগুলি ব্যবহার করে উপস্থাপিত হতে পারে এবং অভ্যন্তরীণভাবে মেমরির ক্ষেত্রে, ইউনিকোড অক্ষরগুলি সাধারণত অক্ষরের প্রতি এক বা দুটি 16-বিট পরিমাণ ব্যবহার করে প্রতিনিধিত্ব করা হয় অক্ষরের পরিসরের উপর নির্ভর করে কখনও কখনও প্রতি অক্ষরে 32-বিট পরিমাণ ব্যবহার করে।
এএসসিআইআই এবং ইউনিকোড দুটি চরিত্রের এনকোডিং। মূলত, তারা বাইনারিগুলিতে পার্থক্যযুক্ত চরিত্রগুলি কীভাবে উপস্থাপন করতে পারে সেগুলি মানদণ্ড যাতে তারা রচনা, সঞ্চয়, সঞ্চারিত এবং ডিজিটাল মিডিয়ায় পড়তে পারে। উভয়ের মধ্যে প্রধান পার্থক্য হ'ল তারা চরিত্রটি এনকোড করার পদ্ধতি এবং প্রতিটিটির জন্য ব্যবহার করে বিটের সংখ্যা। এএসসিআইআই মূলত প্রতিটি অক্ষরকে এনকোড করতে সাত বিট ব্যবহার করে। মূলটির আপাত অপ্রত্যাশনের বিষয়টি চিহ্নিত করার জন্য এটি বর্ধিত এএসসিআইআইয়ের সাথে পরে আটটিতে উন্নীত করা হয়েছিল। বিপরীতে, ইউনিকোডে একটি চলক বিট এনকোডিং প্রোগ্রাম ব্যবহার করা হয় যেখানে আপনি 32, 16 এবং 8-বিট এনকোডিংগুলির মধ্যে চয়ন করতে পারেন। আরও বিট ব্যবহার করে আপনাকে বৃহত্তর ফাইলগুলির ব্যয়ে আরও অক্ষর ব্যবহার করতে দেয় যখন কম বিট আপনাকে সীমিত পছন্দ দেয় তবে আপনি প্রচুর স্থান সঞ্চয় করেন। কম বিট ব্যবহার করে (যেমন
ইউনিকোডের সমস্যা হওয়ার মূল কারণগুলির মধ্যে একটি হ'ল বহু মানক বর্ধিত এএসসিআইআই প্রোগ্রাম থেকে। আপনি যদি প্রচলিত পৃষ্ঠাটি ব্যবহার না করেন, যা মাইক্রোসফ্ট এবং বেশিরভাগ অন্যান্য সফ্টওয়্যার সংস্থাগুলি ব্যবহার করে, তবে আপনার অক্ষরগুলি বাক্স হিসাবে উপস্থিত হওয়ার সাথে আপনি সমস্যার মুখোমুখি হতে পারেন। ইউনিকোড কার্যত এই সমস্যাটি সরিয়ে দেয় কারণ সমস্ত অক্ষর কোড পয়েন্ট মানক করা হয়েছিল।
ইউনিকোডের আর একটি বড় সুবিধা হ'ল এটির সর্বোচ্চে এটি বিশাল সংখ্যক চরিত্রকে সমন্বিত করতে পারে। এ কারণে, ইউনিকোডে বর্তমানে বেশিরভাগ লিখিত ভাষাগুলি রয়েছে এবং এখনও আরও কিছু স্থান রয়েছে। এর মধ্যে রয়েছে ইংরাজির মতো টিপিক্যাল বাম থেকে ডান স্ক্রিপ্ট এমনকি আরবি জাতীয় ডান থেকে বাম স্ক্রিপ্টও। চাইনিজ, জাপানিজ এবং অন্যান্য অনেকগুলি রূপগুলি ইউনিকোডের মধ্যেও প্রতিনিধিত্ব করা হয়। সুতরাং শীঘ্রই ইউনিকোড আর প্রতিস্থাপন করা হবে না।
পুরানো এএসসিআইআইয়ের সাথে সামঞ্জস্যতা বজায় রাখার জন্য, যা সেসময় ইতিমধ্যে ব্যাপকভাবে ব্যবহৃত হয়েছিল, ইউনিকোড এমনভাবে নকশা করা হয়েছিল যাতে প্রথম আটটি বিট সর্বাধিক জনপ্রিয় এএসসিআইআই পৃষ্ঠার সাথে মিলে যায়। সুতরাং আপনি যদি ইউনিকোডের সাথে একটি ASCII এনকোডযুক্ত ফাইলটি খোলেন, আপনি এখনও ফাইলটিতে সঠিক অক্ষরগুলি এনকোডেড পেয়ে যাবেন। এটি ইউনিকোড গ্রহণ সহজতর করেছে কারণ এটি যারা ইতিমধ্যে ASCII ব্যবহার করে তাদের জন্য নতুন এনকোডিং স্ট্যান্ডার্ড গ্রহণের প্রভাবকে হ্রাস করেছিল।
সারসংক্ষেপ:
1.ASCII uses an 8-bit encoding while Unicode uses a variable bit encoding.
2.Unicode is standardized while ASCII isn’t.
3.Unicode represents most written languages in the world while ASCII does not.
4.ASCII has its equivalent within Unicode.
থেকে নেওয়া: http://www.differencesbetween.net/technology/software-technology/differences-between-unicode-and-ascii/#ixzz4zEjnxPhs
প্রদত্ত সংখ্যাগুলি কেবল 1 টি অক্ষর সংরক্ষণ করার জন্য
ইউটিএফ কীভাবে এএসসিআইআইয়ের সুপারস্টার, এএসসিআইআই এবং ইউটিএফ-এর মধ্যে জানার আরেকটি ভাল পার্থক্যটি ডিস্ক ফাইল এনকোডিং এবং এলোমেলো স্মৃতিতে ডেটা উপস্থাপন এবং স্টোরেজ হিসাবে বিবেচিত। প্রোগ্রামগুলি জানে যে প্রদত্ত ডেটাগুলি ASCII বা UTF স্ট্রিং হিসাবে বোঝা উচিত ডেটা শুরুতে বিশেষ বাইট অর্ডার চিহ্ন কোডগুলি সনাক্ত করে, বা প্রোগ্রামার অভিপ্রায় থেকে ধরে নেওয়া যে ডেটাটি পাঠ্য এবং তারপরে এটি চিহ্নিত করে এমন নিদর্শনগুলির জন্য এটি পরীক্ষা করে একটি পাঠ্য এনকোডিং বা অন্য একটিতে।
0x
হেক্সাডেসিমাল ডেটার জন্য প্রচলিত উপসর্গ সংকেত ব্যবহার করে , মৌলিক ভাল রেফারেন্সটি হ'ল ASCII পাঠ্যটি সম্ভাব্য ASCII চরিত্রের মানগুলির একটি উপস্থাপনের 0x00
জন্য বাইট মানগুলি দিয়ে শুরু হয় । UTF টেক্সটটি সাধারণত UTF8 এর বাইটগুলি দিয়ে শুরু করে নির্দেশিত হয় । ইউটিএফ 16 এর জন্য, প্রারম্ভিক বাইটগুলির ক্রম দ্বারা নির্দেশিত পাঠ্য বাইটের এন্ডিয়ান-নেসের ক্রম সহ বাইটগুলি শুরু করুন বা ব্যবহার করুন। সম্ভাব্য বাইট মানগুলির ASCII পরিসরে নেই এমন বাইট মানগুলির সহজ উপস্থিতিও নির্দেশ করে যে ডেটা সম্ভবত ইউটিএফ।0x7F
0xEF 0xBB 0xBF
0xFE 0xFF
0xFF 0xFE
অন্যান্য বাইট অর্ডার চিহ্ন রয়েছে যা ডেটা নির্দেশ করতে বিভিন্ন কোড ব্যবহার করে নির্দিষ্ট এনকোডিং স্ট্যান্ডার্ডটিতে পাঠ্য এনকোডড হিসাবে ব্যাখ্যা করা উচিত।