ইউটিএফ -8 এবং আইএসও -8859-1 এর মধ্যে পার্থক্য কী ?
ইউটিএফ -8 এবং আইএসও -8859-1 এর মধ্যে পার্থক্য কী ?
উত্তর:
ইউটিএফ -8 একটি মাল্টবাইট এনকোডিং যা কোনও ইউনিকোড চরিত্রকে উপস্থাপন করতে পারে। আইএসও 8859-1 একটি একক বাইট এনকোডিং যা প্রথম 256 ইউনিকোড অক্ষরকে উপস্থাপন করতে পারে। উভয়ই ASCII ঠিক একইভাবে এনকোড করেছে।
উইকিপিডিয়া উভয়ই যুক্তিসঙ্গতভাবে ভালভাবে ব্যাখ্যা করেছে: ইউটিএফ -8 বনাম ল্যাটিন -1 (আইএসও -8859-1)। প্রাক্তনটি একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং, পরে একক বাইট স্থির দৈর্ঘ্য এনকোডিং। ইউনিকোড অক্ষর সেটটির প্রথম 256 কোড পয়েন্ট ল্যাটিন -1 এনকোড, যেখানে ইউটিএফ -8 সমস্ত কোড পয়েন্টকে এনকোড করতে ব্যবহার করা যেতে পারে। শারীরিক এনকোডিং স্তরে, কেবল কোডপয়েন্ট 0 - 127 টি একইভাবে এনকোড করা যায়; কোড পয়েন্ট 128 - 255 ইউটিএফ -8 এর সাথে 2-বাইট ক্রম হয়ে পৃথক হয়েছে যেখানে তারা ল্যাটিন -1 এর সাথে একক বাইট রয়েছে।
ইউটিএফ হ'ল বহু-বাইট এনকোডিং প্রকল্পগুলির একটি পরিবার যা ইউনিকোড কোড পয়েন্টগুলি উপস্থাপন করতে পারে যা 2 ^ 31 [প্রায় 2 বিলিয়ন] অক্ষরের প্রতিনিধি হতে পারে। ইউটিএফ -8 একটি নমনীয় এনকোডিং সিস্টেম যা প্রথম 2 ^ 21 [প্রায় 2 মিলিয়ন] কোড পয়েন্ট উপস্থাপন করতে 1 এবং 4 বাইটের মধ্যে ব্যবহার করে।
দীর্ঘ গল্পের সংক্ষিপ্তসার: 127 এর নীচে কোড পয়েন্ট / অর্ডিনাল উপস্থাপনা সহ যে কোনও চরিত্র, ওরফে 7-বিট-সেফ এএসসিআইআই অন্যান্য 1 একক বাইট এনকোডিংয়ের মতো একই বাইট ক্রম দ্বারা উপস্থাপিত হয়। 127 এর উপরে একটি কোড পয়েন্ট সহ যে কোনও অক্ষর দুটি বা আরও বেশি বাইটের ক্রম দ্বারা উপস্থাপিত হয়, এখানে এনকোডিংয়ের বিশদটি সর্বোত্তমভাবে ব্যাখ্যা করা হয়েছে ।
আইএসও-8859 বর্ণমালার যে 127 255 এইসব বিভিন্ন বর্ণমালার এর পরিসীমা মধ্যে প্রতিনিধিত্ব যাবে না "অংশের" ফরম্যাট হিসেবে সংজ্ঞায়িত করা হয় প্রতিনিধিত্ব করতে ব্যবহৃত একক বাইট এনকোডিং স্কিম একটি পরিবার আইএসও-8859- এন , এর সবচেয়ে পরিচিত এগুলি সম্ভবত আইএসও -8859-1 ওরফে 'ল্যাটিন -1' হচ্ছে। ইউটিএফ -8 এর মতো, 7-বিট-নিরাপদ এএসসিআইআই এনকোডিং পরিবারকে ব্যবহার না করেই অকার্যকর থেকে যায়।
এই এনকোডিং স্কিমের অপূর্ণতা হল 128 টিরও বেশি প্রতীক সমন্বিত ভাষাগুলি সংযোজন করা বা একসাথে একাধিক চিহ্নের পরিবারকে নিরাপদে প্রদর্শনের অক্ষমতা। পাশাপাশি, ইউটিএফ-এর উত্থানের সাথে আইএসও -8859 এনকোডিংগুলি সুবিধাজনকভাবে পড়েছে। ২০০৪ সালে বিচ্ছিন্ন হয়ে যাওয়ার দায়িত্বে থাকা আইএসও "ওয়ার্কিং গ্রুপ" তার পিতামাতার সাব কমিটিকে রক্ষণাবেক্ষণ ছেড়ে চলেছে।
এএসসিআইআই: 7 বিট 128 কোড পয়েন্ট।
আইএসও -8859-1: 8 বিট। 256 কোড পয়েন্ট।
ইউটিএফ -8: 8-32 বিট (1-4 বাইট) 1,112,064 কোড পয়েন্ট।
আইএসও -8859-1 এবং ইউটিএফ -8 উভয়ই ASCII এর সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ, তবে ইউটিএফ -8 পিছনে আইএসও -8859-1 এর সাথে সামঞ্জস্যপূর্ণ নয়:
#!/usr/bin/env python3
c = chr(0xa9)
print(c)
print(c.encode('utf-8'))
print(c.encode('iso-8859-1'))
আউটপুট:
©
b'\xc2\xa9'
b'\xa9'
আইএসও -8859-1 1980 এর দশকের একটি উত্তরাধিকারের মান। এটি কেবল পশ্চিমা বিশ্বের কিছু ভাষার জন্য উপযুক্ত 256 টি অক্ষর উপস্থাপন করতে পারে। এমনকি অনেকগুলি সমর্থিত ভাষার জন্যও কিছু অক্ষর অনুপস্থিত। আপনি যদি এই এনকোডিংয়ে কোনও পাঠ্য ফাইল তৈরি করেন এবং কিছু চীনা অক্ষর অনুলিপি / আটকানোর চেষ্টা করেন, আপনি অদ্ভুত ফলাফল দেখতে পাবেন। সুতরাং অন্য কথায়, এটি ব্যবহার করবেন না। ইউনিকোড বিশ্বজুড়ে নিয়েছে এবং ইউটিএফ -8 এই দিনগুলিতে মানদণ্ডগুলির তুলনায় খুব সুন্দর, যদি আপনার কোনও উত্তরাধিকারগত কারণ না থাকে (যেমন HTTP শিরোনামগুলির মতো যা সবকিছুর সাথে সামঞ্জস্যপূর্ণ প্রয়োজন)।
অন্য দৃষ্টিকোণ থেকে, ইউনিকোড এবং এসকিআই এনকোডিং উভয় ফাইলই পড়তে ব্যর্থ হয় কারণ সেগুলির 0xc0
মধ্যে একটি বাইট রয়েছে, সঠিকভাবে আইসো -8859-1 দ্বারা পড়েছে বলে মনে হচ্ছে। সতর্কতাই হ'ল ফাইলটির অবশ্যই অবশ্যই এতে ইউনিকোড অক্ষর থাকা উচিত নয়।
আরও একটি গুরুত্বপূর্ণ বিষয়টি অনুধাবন করা: আপনি যদি দেখতে পান তবে iso-8859-1
এটি সম্ভবত আইএসও / আইসিসি 8859-1 এর চেয়ে উইন্ডোজ -1222 বোঝায় । এগুলি 0x80–0x9F পরিসরে পৃথক হয়, যেখানে আইএসও 8859-1 এর সি 1 নিয়ন্ত্রণ কোড রয়েছে এবং উইন্ডোজ -1222 এর পরিবর্তে দরকারী দৃশ্যমান অক্ষর রয়েছে।
উদাহরণস্বরূপ, আইএসও 8859-1 এর কন্ট্রোল ক্যারেক্টার হিসাবে 0x85 রয়েছে (ইউনিকোডে, ইউ + 0085, ``), উইন্ডোজ -১২২২ এর একটি অনুভূমিক উপবৃত্ত রয়েছে (ইউনিকোডে, ইউ +২২২ H হরিজন্টাল এলপিপসিস …
)।
WHATWG এনকোডিং বৈশিষ্ট (যেমন এইচটিএমএল দ্বারা ব্যবহৃত) স্পষ্টভাবে ঘোষণা করে iso-8859-1
জন্য একটি লেবেল হতে windows-1252
, এবং ওয়েব ব্রাউজার কোন ভাবেই আইএসও 8859-1 সমর্থন করি না: এইচটিএমএল বৈশিষ্ট বলছেন যে এনকোডিং বৈশিষ্ট সমস্ত এনকোডিং সমর্থিত হতে হবে, আর ।
আগ্রহের পাশাপাশি, এইচটিএমএল সংখ্যার চরিত্রের উল্লেখগুলি ইউনিকোড কোড পয়েন্টের পরিবর্তে 8-বিট মানগুলির জন্য মূলত উইন্ডোজ -1222 ব্যবহার করে; প্রতি https://html.spec.whatwg.org/#numeric-character-reference-end-state , …
U + এ 2026 বদলে U + এ 0085 উত্পাদন করা হবে।
এই প্রশ্নটি গবেষণার জন্য আমার কারণটি দৃষ্টিকোণ থেকে ছিল, তারা কোন উপায়ে সামঞ্জস্যপূর্ণ। ল্যাটিন 1 চরসেট (আইসো -8859) একটি ইউটিএফ 8 ডাটাস্টোরে সংরক্ষণ করার জন্য 100% সামঞ্জস্যপূর্ণ। সমস্ত আসকি এবং বর্ধিত-এসকিআই চরগুলি একক বাইট হিসাবে সংরক্ষণ করা হবে।
অন্য উপায়ে যেতে, utf8 থেকে লাতিন 1 চর্সেটে কাজ করা বা নাও হতে পারে। যদি কোনও 2-বাইট চর থাকে (255 বর্ধিত অ্যাস্কি অতিক্রমের অক্ষর) থাকে তবে তারা লাতিন 1 ডেটাস্টোরে সংরক্ষণ করবে না।