"The Unicode Standard uses 8-bit code units in the UTF-8 encoding form, 16-bit code units in the UTF-16 encoding form, and 32-bit code units in the UTF-32 encoding form"
Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat.
Nein, falsch. UTF ist keine Zeichentabelle, die Grundlage ist immer die Unicode-Tabelle, und die umfasst immer 2^32 Zeichen, also 32 Bit, nicht mal hier 8 Bit und dort wieder 32.
UTF sind Kodierungen (UTF-8, -16 und -32), die genutzt werden, um...
1. nicht für jedes Zeichen 32 Bit zu verbraten. Ein Text, der nur 100 verschiedene Zeichen enthält, kann mit 7 Bit "Auflösung" (2^7=128 mögliche Werte) gespeichert werden, dafür braucht man nicht 32 Bit pro Zeichen.
Praktischerweise lassen sich die meisten Texte tatsächlich mit 7 Bit (genauer: dem 7-bittigen US-ASCII-Zeichensatz) darstellen. Speichert man in solchen Fällen pro Zeichen jedesmal 32 Bit, würden 75% der Bits durchgehend 0 anzeigen, 75% des Speicherplatzes wären also nutzlos verschwendet.
Die UTF-Kodierungen erlauben es, die 32 Bit je Unicode-Zeichen in eine variable Wortlänge zwischen 8 und 48 Bit bzw. einem und sechs Byte zu verpacken. Wer möchte, kann UTF deshalb auch als eine Art Komprimierungstechnik bezeichnen. Die zusätzlichen Bits werden benötigt, um anzuzeigen, wieviele Bytes das aktuelle Zeichen belegt.
2. zu verhindern, dass in einer Zeichenkette Nullbytes (alle Bits = 0) vorkommen. Nullbytes werden häufig zur Markierung des Endes einer Zeichenkette genutzt. Bei 32-bittiger Speicherung würden je nach Zeichenwahl, wie bereits unter 1. dargestellt, sehr häufig Nullbytes auftauchen.
Die UTF-Kodierungen sind so angelegt, dass nirgends ein einzelnes Byte ungewollt Null anzeigt.
UTF ist in diesem Sinne auch abwärtskompatibel. Ein Text mit lateinischen Buchstaben ist in 32-Bit Unicode nicht von 7-Bit-US-ASCII zu unterscheiden, sofern in Unicode als UTF-8 gespeichert wurde. Selbst Unicode/UTF-8-Texte mit gelegentlichen nicht-lateinischen Zeichen lassen sich mit herkömmlichen Programmen noch problemlos erkennen, wie man an Deinem Beispiel ja hervorragend sieht:
Wenn der Hahn kräht auf dem Mist
Unschwer zu erkennen, dass das Zeichen ä in Deinem UTF-8-Beispiel nicht 8 sondern 16 Bit belegt. Darauf, dass dieser Unicode-Text mit überwiegend lateinischen Buchstaben immer noch lesbar ist, obwohl er als US-ASCII dargestellt wird, brauche ich wohl nicht hinzuweisen :)
Die Zahl am Ende des UTF-Namens besagt also, wie lang die kleinste Zeichen-Einheit sein kann, nicht wie lang sie generell ist.
UTF-8 ist übrigens nochmals kurz und detailiert unter [http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8] beschrieben.