Foundationপ্রথম নীতি থেকে
LEVEL 1 · How Computers Represent Information

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১ byteU+0000U+007F (ASCII)
110xxxxx২ byteU+0080U+07FF
1110xxxx৩ byteU+0800U+FFFF (বাংলা এখানে)
11110xxx৪ byteU+10000U+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 দুর্বলতা)।