UTF-8
ইউটিএফ-৮
Unicode code point-কে byte-এ এনকোড করার সবচেয়ে জনপ্রিয় পদ্ধতি — variable-width (1-4 byte), ASCII-সামঞ্জস্যপূর্ণ, self-synchronizing।
also: utf8
প্রতিটা code point-কে ১ থেকে ৪ byte দিয়ে এনকোড করে, leading bit pattern দিয়ে দৈর্ঘ্য বোঝায়:
| প্রথম byte | দৈর্ঘ্য | code point পরিসর |
|---|---|---|
0xxxxxxx | ১ byte | U+0000–U+007F (ASCII) |
110xxxxx | ২ byte | U+0080–U+07FF |
1110xxxx | ৩ byte | U+0800–U+FFFF (বাংলা এখানে) |
11110xxx | ৪ byte | U+10000–U+10FFFF (emoji) |
বাকি byte-গুলো সবসময় 10xxxxxx প্যাটার্নে শুরু হয় — এই কারণেই
UTF-8 self-synchronizing: স্ট্রিমের যেকোনো মাঝখান থেকে পড়া
শুরু করলেও পরের অক্ষরের শুরু খুঁজে পাওয়া যায়, leading byte-এর
প্যাটার্ন চিনে।
প্রথম ১২৮ code point ঠিক ASCII-র মতোই ১ byte-এ এনকোড হয় — এই backward-compatibility-ই UTF-8-এর জয়ের মূল কারণ (পুরনো ASCII-only সফটওয়্যার UTF-8 টেক্সট আংশিকভাবে ঠিকই পড়তে পারে)।
UTF-8 অবশ্যই [[injective]] হতে হবে — একই code point-এর দুইটা
ভিন্ন encoding (overlong encoding) স্পষ্টভাবে নিষিদ্ধ, কারণ এটা
security filter bypass-এর জন্য ঐতিহাসিকভাবে exploit হয়েছে
(যেমন IIS-এর %c0%af overlong-slash দুর্বলতা)।