ইউটিএফ -8 এবং আইএসও -8859-1 এর মধ্যে পার্থক্য কী?


উত্তর:


321

ইউটিএফ -8 একটি মাল্টবাইট এনকোডিং যা কোনও ইউনিকোড চরিত্রকে উপস্থাপন করতে পারে। আইএসও 8859-1 একটি একক বাইট এনকোডিং যা প্রথম 256 ইউনিকোড অক্ষরকে উপস্থাপন করতে পারে। উভয়ই ASCII ঠিক একইভাবে এনকোড করেছে।


11
একটি বিষয় লক্ষণীয় যে ASCII কেবল 0 থেকে 127 পর্যন্ত প্রসারিত। এমএসবি সর্বদা 0 থাকে
হৃতিক 26

3
যখন 127 এর উপরে কোড পয়েন্টগুলি সংজ্ঞায়িত করা হয়, তখন এনকোডিং সিস্টেমটি বর্ধিত ASCII এর একটি সংস্করণ।
রোহান ভালে

1
@ রোহনভালে বর্ধিত এএসসিআইআই শব্দটি ব্যবহার করবেন না; এটি কেবল বিভ্রান্তি সৃষ্টি করবে।
মিস্টার লিস্টার

তবে বর্ধিত আসকি সঠিক শব্দ হতে পারে। আমি এটি একাধিক সংস্থানগুলিতে পড়েছি
রোহান ভলে

135

উইকিপিডিয়া উভয়ই যুক্তিসঙ্গতভাবে ভালভাবে ব্যাখ্যা করেছে: ইউটিএফ -8 বনাম ল্যাটিন -1 (আইএসও -8859-1)। প্রাক্তনটি একটি পরিবর্তনশীল দৈর্ঘ্যের এনকোডিং, পরে একক বাইট স্থির দৈর্ঘ্য এনকোডিং। ইউনিকোড অক্ষর সেটটির প্রথম 256 কোড পয়েন্ট ল্যাটিন -1 এনকোড, যেখানে ইউটিএফ -8 সমস্ত কোড পয়েন্টকে এনকোড করতে ব্যবহার করা যেতে পারে। শারীরিক এনকোডিং স্তরে, কেবল কোডপয়েন্ট 0 - 127 টি একইভাবে এনকোড করা যায়; কোড পয়েন্ট 128 - 255 ইউটিএফ -8 এর সাথে 2-বাইট ক্রম হয়ে পৃথক হয়েছে যেখানে তারা ল্যাটিন -1 এর সাথে একক বাইট রয়েছে।


@ মুমু হয়তো আমার বক্তব্যটি দ্ব্যর্থক ছিল, তবে এটি ভুল নয় - আমি এনকোডড বাইট ক্রমগুলি নিয়ে কথা বলছিলাম না, বরং চরিত্রের সেটগুলি এনকোড করা হচ্ছে; এর অর্থ ইউএসিক -8859-1 ইউনিকোড অক্ষর সেটটির 256 কোড পয়েন্টগুলি এনকোড করতে ব্যবহৃত হয়।
স্টেক্সম্যান

আপনার ব্যাখ্যা আমার জন্য কাজ করে এবং "অস্পষ্ট" "ভুল" এর চেয়ে আরও ভাল শব্দ পছন্দ হত।
মিউ খুব অল্প

83

হল UTF

ইউটিএফ হ'ল বহু-বাইট এনকোডিং প্রকল্পগুলির একটি পরিবার যা ইউনিকোড কোড পয়েন্টগুলি উপস্থাপন করতে পারে যা 2 ^ 31 [প্রায় 2 বিলিয়ন] অক্ষরের প্রতিনিধি হতে পারে। ইউটিএফ -8 একটি নমনীয় এনকোডিং সিস্টেম যা প্রথম 2 ^ 21 [প্রায় 2 মিলিয়ন] কোড পয়েন্ট উপস্থাপন করতে 1 এবং 4 বাইটের মধ্যে ব্যবহার করে।

দীর্ঘ গল্পের সংক্ষিপ্তসার: 127 এর নীচে কোড পয়েন্ট / অর্ডিনাল উপস্থাপনা সহ যে কোনও চরিত্র, ওরফে 7-বিট-সেফ এএসসিআইআই অন্যান্য 1 একক বাইট এনকোডিংয়ের মতো একই বাইট ক্রম দ্বারা উপস্থাপিত হয়। 127 এর উপরে একটি কোড পয়েন্ট সহ যে কোনও অক্ষর দুটি বা আরও বেশি বাইটের ক্রম দ্বারা উপস্থাপিত হয়, এখানে এনকোডিংয়ের বিশদটি সর্বোত্তমভাবে ব্যাখ্যা করা হয়েছে

আইএসও-8859

আইএসও-8859 বর্ণমালার যে 127 255 এইসব বিভিন্ন বর্ণমালার এর পরিসীমা মধ্যে প্রতিনিধিত্ব যাবে না "অংশের" ফরম্যাট হিসেবে সংজ্ঞায়িত করা হয় প্রতিনিধিত্ব করতে ব্যবহৃত একক বাইট এনকোডিং স্কিম একটি পরিবার আইএসও-8859- এন , এর সবচেয়ে পরিচিত এগুলি সম্ভবত আইএসও -8859-1 ওরফে 'ল্যাটিন -1' হচ্ছে। ইউটিএফ -8 এর মতো, 7-বিট-নিরাপদ এএসসিআইআই এনকোডিং পরিবারকে ব্যবহার না করেই অকার্যকর থেকে যায়।

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


1
প্রশ্নের উত্তর দেওয়ার জন্য কিন্তু বাইরে গিয়ে সম্পর্কিত এনকডিংগুলি সম্পর্কে তথ্য সরবরাহ করার জন্য +1। পুনরায়: ইউটিএফ -8 এর জন্য কোড পয়েন্ট, স্ট্যাকওভারফ্লো.com /a/ 38488358 / 3353984 অনুসারে , ইউটিএফ -8 2 ^ 21 কোড পয়েন্টকে সমর্থন করে। এটি কি ত্রুটি, বা এখানে কোনও সংশোধন প্রয়োজন হতে পারে?
টম লোরেডো

1
ইউনিকোড আসলে 2 ^ 16 কোড পয়েন্টের 17 টি প্লেন। 0x00_0000 থেকে 0x1F_FFFF। 17 টি বিমান 1,114,112 কোড পয়েন্টের সমন্বয় করতে পারে। এর মধ্যে ২,০৪৮ জন সরোগেট, 66 66 জন নন-চরিত্রের, এবং ১৩7,৪68। জন বেসরকারী ব্যবহারের জন্য সংরক্ষিত রয়েছে, পাবলিক অ্যাসাইনমেন্টের জন্য ৯,74৪,৫৩০ রেখেছেন 1 প্রায় ১ মিলিয়ন। UTF-8 এনকোড করতে পারে কত অক্ষর দেখুন ?
জর্জিওগ

22
  • এএসসিআইআই: 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'

21

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


1
আমি দেখেছি যেখানে উমলৌতরা ইউটিএফ 8 এর সাথে অনুমিত হয় না। আমরা এর উদাহরণগুলি দেখেছি এবং অনুসন্ধানে আমরা ISO-8859-1 পেয়েছি এবং এটি কার্যকর বলে মনে হচ্ছে। আমাদের সাথে প্রচুর জার্মান বিজ্ঞানী কাজ করেন।
87

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

3

অন্য দৃষ্টিকোণ থেকে, ইউনিকোড এবং এসকিআই এনকোডিং উভয় ফাইলই পড়তে ব্যর্থ হয় কারণ সেগুলির 0xc0মধ্যে একটি বাইট রয়েছে, সঠিকভাবে আইসো -8859-1 দ্বারা পড়েছে বলে মনে হচ্ছে। সতর্কতাই হ'ল ফাইলটির অবশ্যই অবশ্যই এতে ইউনিকোড অক্ষর থাকা উচিত নয়।


2

আরও একটি গুরুত্বপূর্ণ বিষয়টি অনুধাবন করা: আপনি যদি দেখতে পান তবে 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 উত্পাদন করা হবে।


ওহো! ভেবেছিলাম আমি এটি লিখেছি, তবে আমি এটি একটি পুনরায় লেখায় হারিয়েছি lost আমি এখন এটি রাখা হয়েছে।
ক্রিস মরগান

0

এই প্রশ্নটি গবেষণার জন্য আমার কারণটি দৃষ্টিকোণ থেকে ছিল, তারা কোন উপায়ে সামঞ্জস্যপূর্ণ। ল্যাটিন 1 চরসেট (আইসো -8859) একটি ইউটিএফ 8 ডাটাস্টোরে সংরক্ষণ করার জন্য 100% সামঞ্জস্যপূর্ণ। সমস্ত আসকি এবং বর্ধিত-এসকিআই চরগুলি একক বাইট হিসাবে সংরক্ষণ করা হবে।

অন্য উপায়ে যেতে, utf8 থেকে লাতিন 1 চর্সেটে কাজ করা বা নাও হতে পারে। যদি কোনও 2-বাইট চর থাকে (255 বর্ধিত অ্যাস্কি অতিক্রমের অক্ষর) থাকে তবে তারা লাতিন 1 ডেটাস্টোরে সংরক্ষণ করবে না।


2
সহায়ক, তবে আমি মনে করি আপনি 125 এর পরিবর্তে 125 এর পরিবর্তে বর্ধিত-ইস্কি 255 ব্যবহার করছেন?
হাইড্রোপার

18
ল্যাটিন -১, বা আইসো -8859-1 ইউটিএফ 8-তে সংরক্ষণ করার জন্য 100% উপযুক্ত নয়। 127 এর উপরে কোনও ল্যাটিন-এন বা আইসো -8859-এন অক্ষরটি একটি একক বাইট utf-8 অক্ষরে অনুবাদ করা হবে না। তবে, 1-127 মানের জন্য, তারা ঠিক অনুবাদ করবে।
মার্লিন পিয়ার্স

4
এই উত্তরটি "বর্ধিত আসকি" শব্দটির ব্যবহারে কিছুটা বিভ্রান্তিকর, যা কেবলমাত্র কোনও শব্দ যেমন এনএসসিআই নয় এমন কোনও অক্ষর এনকোডিংকে বোঝায়। ইউটিএফ -8 এবং লাতিন -1 হ'ল বর্ধিত-এএসসিআইআই এনকোডিংগুলির উদাহরণ। তবে, অ-এস্কি ল্যাটিন -১ অক্ষর (যেমন 127 এর উপরে কোড পয়েন্ট) ইউটিএফ -8 এ একক বাইট হিসাবে এনকোড করা যাবে না।
rdb
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.