Utf-8 wieso werden 8-bit Zeichen in 2 Byte gespeichert?

3 Antworten

UTF-8 hat eine variable Länge. Die ersten 127 Zeichen sind identisch mit dem ASCII-Code. Also alle Zeichen, deren erstes Bit eine 0 ist. Wenn ein Byte mit einer 1 anfängt, heißt das, dass es ein Steuerbit für UTF-8 ist. Damit die Codierung in UTF-8 richtig funktioniert, müssen also alle Zeichen ab 8 Bit Länge in mehrere Bytes aufgeteilt werden.

Bei deinem Zeichen kann man gut sehen, wie die Codierung von UTF-8 bei längeren Zeichen funktioniert.

11000010 10100001

Die fett geschriebenen Bits sind die Steuerbits für UTF-8. Das "110" im ersten Byte heißt, dass das Zeichen in zwei Bytes codiert wird (bei mehr Bytes werden dementsprechend mehr Einsen verwendet). Das "10" im zweiten Byte bedeutet, dass es ein Folgebyte eines Zeichens ist, was aus mehreren Bytes besteht.

Die normal geschriebenen Bits ergeben den Code für das eigentliche Zeichen 000 1010 0001. Die führenden Nullen kann man abschneiden, also bleibt 1010 0001 übrig, was man dann in der Unicode-Tabelle nachschlagen kann, und was halt das umgedrehte Ausrufezeichen ergibt.

Mit 8 Bit kann man 256 Zeichen unterscheiden, der Unicode-Zeichenvorrat ist aber viel größer. UTF-8 ist eine Kodierung mit variabler Länge, und für die gilt das alte Prinzip der Datenkompression: wenn häufig Benutztes kleiner wird, muss selten Benutztes größer werden.

UTF-8 ist ein Multi-Byte Encoding. Ein zeichen kann zwischen 1 und 4 Byte lang sein.