Christian Kruse: Japanisch mit numerischen Entities / ISO-8859-1

Beitrag lesen

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

--
Das Sein entsteht aus dem Nicht-Sein.
http://wwwtech.de/