Hallo Sven,
[...] weil die durch UTF-8 entstehenden Bytecodes zum einen
eben immer 8-Bit-Einheiten sind (von denen eine, zwei, drei
oder vier zu einem Unicode-Zeichen zusammengehören),Falsch. 1 bis 6 Byte ergeben eine Unicode-Sequenz.
Wenn wir von UTF-8 reden, ist noch 1 bis 4 Byte korrekt.
Kommt drauf an, welches UTF-8 du meinst. Redest du von ISO/IEC 10646,
sind es 1-6 Byte. Redest du von UTF-8, wie es in RFC 3629 definiert
ist, sind es 1-4 Byte. Allerdings heisst es in der RFC auch:
Another security issue occurs when encoding to UTF-8: the ISO/IEC
10646 description of UTF-8 allows encoding character numbers up to
U+7FFFFFFF, yielding sequences of up to 6 bytes. There is
therefore a risk of buffer overflow if the range of character
numbers is not explicitly limited to U+10FFFF or if buffer sizing
doesn't take into account the possibility of 5- and 6-byte
sequences.
Heisst, sie sollten in jedem Fall beruecksichtigt werden (habe ich
in meinem »UTF-8 to Unicode«-Decoder uebrigens auch getan :-).
Bei UTF-16 sind es, je nach Zeichen, übrigens 2 oder 4 Byte.
Ja.
Wieso du auf 1-6 Byte kommst, würde mich interessieren.
Es gibt zwei UTF-8-Definitionen. Einmal vom ISO (ISO/IEC 10646) und
einmal per RFC definiert. Der ISO-Standard definiert eine UTF-8-
Sequenz als bis zu 6 Byte lang.
Grüße,
CK