আরও দেখুন চীনা অক্ষর সহ একটি ফাইল কীভাবে জানতে পারে যে প্রতি চরিত্রের জন্য কতগুলি বাইট ব্যবহার করতে হবে? - সন্দেহ নেই, অন্যান্য এসও প্রশ্নগুলিও সহায়তা করবে help
ইউটিএফ -8 এ আপনি নিম্নলিখিত ধরণের বাইট পাবেন:
Binary Hex Comments
0xxxxxxx 0x00..0x7F Only byte of a 1-byte character encoding
10xxxxxx 0x80..0xBF Continuation bytes (1-3 continuation bytes)
110xxxxx 0xC0..0xDF First byte of a 2-byte character encoding
1110xxxx 0xE0..0xEF First byte of a 3-byte character encoding
11110xxx 0xF0..0xF4 First byte of a 4-byte character encoding
(শেষ লাইনটি 0xF0..0xF7 পড়তে হবে বলে মনে হচ্ছে; তবে, ইউনিকোডের 21-বিট পরিসর (U +0000 - U + 10FFFF) এর অর্থ হল যে সর্বোচ্চ বৈধ মান 0xF4; মান 0xF5..0xF7 এর মধ্যে উপস্থিত হতে পারে না বৈধ ইউটিএফ -8।)
বাইটগুলির একটি নির্দিষ্ট ক্রমটি বৈধ ইউটিএফ -8 এর অর্থ কিনা তা দেখার অর্থ আপনার সম্পর্কে চিন্তা করা দরকার:
- প্রত্যাশিত নয় যেখানে ধারাবাহিকতা বাইট উপস্থিত হবে
- অবিচ্ছিন্নতা বাইট প্রদর্শিত হবে যেখানে ধারাবাহিকতা বাইট প্রত্যাশিত
- স্ট্রিংয়ের শেষে অসম্পূর্ণ অক্ষর ('ধারাবাহিকতা বাইট প্রত্যাশিত' এর প্রকরণ)
- সর্বনিম্ন ক্রম
- ইউটিএফ -16 সারোগেটস
বৈধ ইউটিএফ -8 এ, বাইটস 0xF5..0xFF ঘটতে পারে না।
সর্বনিম্ন ক্রম
কিছু চরিত্রের জন্য একাধিক সম্ভাব্য উপস্থাপনা রয়েছে। উদাহরণস্বরূপ, ইউনিকোড অক্ষর U +0000 (ASCII NUL) প্রতিনিধিত্ব করতে পারে:
0x00
0xC0 0x80
0xE0 0x80 0x80
0xF0 0x80 0x80 0x80
তবে, ইউনিকোড স্ট্যান্ডার্ডটি পরিষ্কারভাবে জানিয়েছে যে শেষ তিনটি বিকল্প গ্রহণযোগ্য নয় কারণ সেগুলি ন্যূনতম নয়। এটি এমনটি ঘটে যে বাইটস 0xC0 এবং 0xC1 কখনই বৈধ ইউটিএফ -8 এ উপস্থিত হতে পারে না কারণ কেবলমাত্র অক্ষরগুলির দ্বারা এনকোড করা যেতে পারে 0x00..0x7F পরিসরে একক বাইট অক্ষর হিসাবে ন্যূনতমভাবে এনকোড করা হয়েছে।
ইউটিএফ -16 সারোগেটস
বেসিক মাল্টি-ল্যাঙ্গুয়াল প্লেন (বিএমপি) এর মধ্যে ইউনিকোড মান ইউ + ডি 800 - ইউ + ডিএফএফএফটি ইউটিএফ -16 সারোগেটের জন্য সংরক্ষিত এবং বৈধ ইউটিএফ -8 এ এনকোড প্রদর্শিত হতে পারে না। যদি তারা ইউটিএফ -8 এ বৈধ হয় (যা আমি জোর দিয়ে বলছি, তারা নয়) তবে সার্োগেটগুলি এনকোড করা হবে:
- U + D800 - 0xED 0xA0 0x80 (ক্ষুদ্রতম উচ্চতর সারোগেট)
- ইউ + ডিবিএফএফ - 0xED 0xAF 0xBF (বৃহত্তম উচ্চতর সারোগেট)
- U + DC00 - 0xED 0xB0 0x80 (ক্ষুদ্রতম নিম্ন সারোগেট)
- ইউ + ডিএফএফএফ - 0xED 0xBF 0xBF (বৃহত্তম নিম্ন সারোগেট)
খারাপ ডেটা
সুতরাং, আপনার বিএডি ডেটাতে এই বিভিন্ন প্রেসক্রিপশন লঙ্ঘনকারী নমুনাগুলি থাকা উচিত।
- চালিয়ে যাওয়া বাইট প্রাথমিক বাইট মানগুলির মধ্যে একটির আগে নয়
- মাল্টি-ক্যারেক্টার প্রাথমিক বাইটগুলি পর্যাপ্ত ধারাবাহিকতা বাইট অনুসরণ করে না
- অ-ন্যূনতম বহু-বাইট অক্ষর
- ইউটিএফ -16 সারোগেটস
- অবৈধ বাইটস (0xC0, 0xC1, 0xF5..0xFF)।
নোট করুন যে একটি বাইট-অর্ডার চিহ্ন (বিওএম) ইউ + এফএফএফ, ওরফে শূন্য-প্রস্থের নন-ব্রেক স্পেস (জেডডাব্লুএনবিএসপি), ইউটিএফ -8 এ বিনা কোডবিহীন উপস্থিত হতে পারে না - বৈধ ইউটিএফ -8 এ বাইটস 0xFF এবং 0xFE অনুমোদিত নয়। একটি এনকোডেড জেডডাব্লুএনবিএসপি একটি ইউটিএফ -8 ফাইলে 0xEF 0xBB 0xBF হিসাবে উপস্থিত হতে পারে, তবে বিওএমটি ইউটিএফ -8-তে সম্পূর্ণরকম অতিরিক্ত প্রয়োজন is
ইউনিকোডে কিছু ননচার্যাকারও রয়েছে। ইউ + এফএফএফই এবং ইউ + এফএফএফএফ হ'ল এই জাতীয় দুটি ননক্র্যাক্টর (এবং প্রতিটি প্লেনের শেষ দুটি কোড পয়েন্ট, ইউ + 1FFF, ইউ + 1 এফএফএফ, ইউ + 2 এফএফএফই, ইউ + 2 এফএফএফএফ, ইউ + 10 এফএফএফই, ইউ + 10 এফএফএফএফ অন্যান্য) )। এগুলি সাধারণত ইউনিকোড ডেটাতে ডেটা এক্সচেঞ্জের জন্য উপস্থিত না হওয়া উচিত, তবে ব্যক্তিগত ব্যবহারে উপস্থিত হতে পারে। ইউনিকোডে ননচার্যাক্টরের বরং জটিল ইতিহাস সহ প্রচুর বোকা বিবরণের জন্য ইউনিকোড এফএকিউ লিঙ্কটি দেখুন। ( ধনাত্মক # 9: ননচার্যাক্টরদের সম্পর্কে স্পষ্টতা , যা জানুয়ারী 2013 এ প্রকাশিত হয়েছিল, এর শিরোনামের পরামর্শ অনুযায়ী যা করে - অ-অক্ষরগুলির অর্থ পরিষ্কার করে))