Warum Unicode? Weil ASCII nur 127 Zeichen hat. Die Zeichen von 128 bis 255 sind in den verschiedenen Ländern unterschiedlich, und deshalb gibt es Codepages. Sie sagten also: Lasst uns bis zu 1114111 Zeichen haben.
Wie speichern Sie also den höchsten Codepunkt? Sie müssen ihn mit 21 Bits speichern, also verwenden Sie ein DWORD mit 32 Bits, wobei 11 Bits verschwendet werden. Wenn Sie also ein DWORD verwenden, um ein Unicode-Zeichen zu speichern, ist dies der einfachste Weg, da der Wert in Ihrem DWORD genau dem Codepunkt entspricht.
Aber DWORD-Arrays sind natürlich größer als WORD-Arrays und natürlich noch größer als BYTE-Arrays. Deshalb gibt es nicht nur UTF-32, sondern auch UTF-16. Aber UTF-16 bedeutet einen WORD-Stream, und ein WORD hat 16 Bits, wie kann also der höchste Codepunkt 1114111 in ein WORD passen? Das kann er nicht!
Also packen sie alles, was höher als 65535 ist, in ein DWORD, das sie Surrogat-Paar nennen. Ein solches Surrogat-Paar sind zwei WÖRTER und können anhand der ersten 6 Bits erkannt werden.
Und was ist mit UTF-8? Es ist ein Byte-Array oder Byte-Stream, aber wie kann der höchste Codepunkt 1114111 in ein Byte passen? Das kann nicht sein! Okay, also wird auch ein DWORD eingefügt, richtig? Oder vielleicht ein WORD, richtig? Fast richtig!
Sie haben utf-8-Sequenzen erfunden, was bedeutet, dass jeder Codepunkt höher als 127 in eine 2-Byte-, 3-Byte- oder 4-Byte-Sequenz kodiert werden muss. Wahnsinn! Aber wie können wir solche Sequenzen erkennen? Nun, alles bis 127 ist ASCII und besteht aus einem einzigen Byte. Was mit 110 beginnt, ist eine Zwei-Byte-Sequenz, was mit 1110 beginnt, ist eine Drei-Byte-Sequenz und was mit 11110 beginnt, ist eine Vier-Byte-Sequenz. Die restlichen Bits dieser so genannten "Startbytes" gehören zum Codepunkt.
Je nach Reihenfolge müssen nun folgende Bytes folgen. Ein Folgebyte beginnt mit 10, und die restlichen Bits sind 6 Bits Nutzdatenbits und gehören zum Codepunkt. Verketten Sie die Nutzdatenbits des Startbytes und des/der folgenden Bytes und Sie haben den Codepunkt. Das ist die ganze Magie von UTF-8.