Hellihello Sven,
UTF-8 nutzt variabel viele Bytes, um ein Zeichen darzustellen. Es beginnt bei 1 Byte, und geht bis hin zu vier Bytes. Durch die geschickte Wahl der Codierung kann man jedem Byte ansehen, ob es für sich alleine steht, oder zu einem Multibyte-Zeichen gehört. Hat man es mit einem Multibyte-Zeichen zu tun, kann man feststellen, ob es das erste Zeichen einer Sequenz ist, oder eines der Folgezeichen. Hat man es mit einem Folgezeichen zu tun, befindet sich das erste Zeichen der Sequenz immer ein paar Bytes weiter vorne in der Bytefolge. Und das erste Zeichen einer Sequenz liefert immer die Anzahl der Folgebytes, die noch zu diesem Zeichen gehören, mit.
In deinem Betrachtungsfall hast du also drei Bytes:
- Absatz-Byte.
- "ä"-Byte.
- Absatz-Byte.
LF+CR, einmal 00001010 einmal 00001101, jeweils das erste Bit nicht gesetzt, werden normal interpretiert.
ä ist 0xE4, also 11100100 (???), immerhin aber das erste Bit gesetzt, wie du sagst. Und die nächsten beiden, also müssten die nächsten beiden folgenden Bytes mit 10... beginnen? Das wäre eigentlich beim "§" der Fall (0xA7 entspr. 10100111). Aber die Folge "ä§§" also 111001001010011110100111 bringt auch ein Kästchen.
»
Das sind drei Bytes, die entsprechend der Regeln der Codierung betrachtet werden müssen. Wählst du ISO-8859-1, und das "ä" ist gemäß dieser Vorschrift codiert, wirst du ein vernünftiges "ä" sehen.
Wählst du UTF-8, und das "ä" ist dennoch laut ISO-8859-1 codiert, wirst du anstelle des "ä" ein Kästchen oder Fragezeichen als Indikator für "fehlerhaftes oder nicht darstellbares Zeichen" erhalten...
Das mal ein entscheidender Schritt zu Verständnis: dass das Quadrat eben Platzhalter für ein nicht-darstellbares Zeichen ist.
Alternativ kann es aber auch passieren, dass gemäß der Bit-Angabe des "ä"-Bytes einfach alle nachfolgenden Bytes als zugehörig zu diesem Multibyte-Zeichen gerechnet werden - und im Editor einfach verschwinden.
Nein, das macht Scite dann schon ganz "clever".
Deshalb ist es immer extrem wichtig, dass man festlegt und mit angibt, nach welcher Codierungsvorschrift die Bytes eines Textes zu interpretieren sind.
Jau, das ja sowieso. Ich dachte halt, ich komme dem mal dem Grunde nach auf die Spur. Deine Zahlenwirbel da oben haben schon fast dazu geführt (;-).
Dank und Gruß,