int var = 'A';

যখন সি শিখছিলাম তখন ঐ স্টেটমেন্ট এর ব্যাখ্যা এভাবে করা ছিলো যে, var নামের ইন্টিজার টাইপ ভ্যারিয়েবলে A ক্যারেক্টারের ASCII Code অ্যাসাইন করা হইছে।

এখন জাভা শিখতেছি এই Introduction to java by Y. Daniel বইটা থেকে। এই বইতে আবার ঐ কোডের ব্যাখ্যা হিসাবে ASCII Code এর যায়গায় Universal Code বা Unicode লিখা।

আমার প্রশ্ন হচ্ছে, সি এর সময় ASCII আর জাভার সময় Universal কেন? দয়া করে এইটার উত্তর ব্যাখ্যা সহকারে একটু বড় করে লিখলে উপকৃত হবো।

আর আমার Unicode সম্পর্কে ধারণা একটু আছে। আমি আরেকটু বিস্তারিত ভাবে বাংলায় জানতে চাই।

ধন্যবাদ

asked 31 Aug '16, 14:27

_Shaon_'s gravatar image

_Shaon_
796323


কারন জাভা ক্যারেক্টার গুলো ২ বাইট (১৬ বিট) এর, যাতে শুধু আসকিতে সীমাবদ্ধ না থেকে ইউনিকোড এর ক্যারেক্টারগুলোও ঠিক ঠাক মত দেখাতে পারে । সি এর বেলায় ক্যার টাইপ ১ বাইটের, তাই সি ইউনিকোড সরাসরি সাপোর্ট করে না । একারনে সি এর বেলায় আসকি আর জাভার বেলায় ইউনিকোড উল্লেখ করেছেন লেখক ।

permanent link

answered 03 Sep '16, 15:29

masnun's gravatar image

masnun
21112

প্রথম দিকে যখন সি ল্যাঙ্গুয়েজ ডেভেলপ হচ্ছিল, তখন ক্যারেক্টার এর জন্যবহুল প্রচলিত স্ট্যান্ডার্ড ছিল ASCIIEBCDIC । ASCII এর এনকোডিং ৭ বিট আর EBCDIC এর ৮ বিট। তখন মনে করা হল যেহেতু ASCII এর জন্য ৭ বিট প্রয়োজন, তাই ৮ বিট তথা ১ বাইটই যথেষ্ট হবে ক্যারেক্টারের জন্য। তাই সি ল্যাঙ্গুয়েজে ক্যারেক্টার টাইপের জন্য ১ বাইট মেমোরি দেওয়া হলো।

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

এদিকে সি পড়ে গেল বিপাকে। সি ততদিনে এতোটাই বিস্তৃতি পেয়ে গেছিল যে নতুন করে ক্যারেক্টারের এনকোডিং বদলাবে সেই উপায় নেই। আর এসময় উদয় হলো জাভার। তারা আর এই ভুল(!)টা করলো না। যেহেতু Unicode প্রচলিত হতে শুরু করছিল, জাভা ঠিক করলো ক্যারেক্টার এর জন্য ৮ বিট নয়, ১৬ বিটই সই। এভাবে জাভা ক্যারেক্টার এনকোডিং এর জন্য Unicode কে রেখে দিল।

কিন্তু সিনেমার হ্যাপি এন্ডিং এখানেই না। আরো পরে দেখা গেল যে, Unicode এর আকার বেড়ে বেড়ে ১৬ গুন বৃদ্ধি পেয়ে গেছে। জাভাও সেই সি এর মত অবস্থায় পড়ে গেল। তবে এই বিপদ থেকে উদ্ধার করতে খোদ Unicode Consortium (Unicode স্ট্যান্ডার্ড প্রণয়নকারী প্রতিষ্ঠান) এগিয়ে এলো। তারা একটি নতুন এনকোডিং দাঁড়া করাল যার নাম UTF-16 । এই এনকোডিং এর মাধ্যমে তারা সব ক্যারেক্টারকে ২ বাইট এই রাখার অভিনব ব্যবস্থা করে দিল। এই সম্পর্কে বিস্তারিত জানতে এখানে ঢুঁ মেরে আসতে পারেন। এই হচ্ছে সংক্ষিপ্ত ইতিহাস।

ইউনিকোড সম্পর্কে আরো বিস্তারিত জানতে চাইলে এই লিঙ্কটা দেখতে পারেন।

permanent link

answered 03 Sep '16, 16:24

Shahidur%20Rahman's gravatar image

Shahidur Rahman
562

edited 03 Sep '16, 16:27

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×210
×2
×1

question asked: 31 Aug '16, 14:27

question was seen: 766 times

last updated: 03 Sep '16, 16:27