Gunnar Bittersmann: einige Fragen zur Zeichenkodierung

Beitrag lesen

@@Karl Heinz

1. Wenn ich das richtig verstanden habe, dann sind zum einen die Zeichen in der *.txt Datei mit einem bestimmten Zeichensatz kodiert, zum anderen kann im Editor ein Zeichensatz eingestellt werden, mit welchem die Zeichen in der *.txt interpretiert werden. Ist das so korrekt erklärt?

Nein. Ein Zeichensatz bestimmt, welche Zeichen vorkommen können. Wie anno dazumals beim Lettersatz: Es kann nur das zu Papier gebracht werden, wozu es eine Bleitetter im Zeichensatz (wörtlich: ein Satz von Zeichen) gibt. Im Digitalen wird heute Unicode als Zeichensatz verwendet – darin sind alle Zeichen enthalten. Und Unicode wird ständig erweitert: es kommen Emojis hinzu oder für besondere Sprachen verwendete oder historische Schriften.

Wie die Zeichen im Coputer auf Bytes (Bytesequenzen) abgebildet werden, ist Sache der Zeichencodierung.

Im Zeitalter von 8-Bit-Codierungen (ISO 8859) konnte man die Begriffe noch vermengen; heute gilt es, sie sorgfältig auseinanderzuhalten. Siehe Zeichencodierung für Anfänger und Zeichencodierungen: grundlegende Konzepte, besonders Abschnitt Zeichensätze, codierte Zeichensätze und Zeichencodierungen.

2. Demnach werden die Zeichen im Editor falsch dargestellt, wenn der im Editor gewählte Zeichensatz nicht zu dem Zeichensatz passt, mit welchem die Zeichen in der *.txt Datei kodiert wurden. Ist das so korrekt erklärt?

Wenn man „Zeichensatz“ durch „Zeichencodierung“ ersetzt, ja. Wenn eine Bytesequenz mit einer anderen Zeichencodierung decodiert wird als sie codiert wurde, dann kann da Murks rauskommen.

3. Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden? Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden.

Textdateien haben keine Metadaten (in sich). Wenn die aber als Ressourcen auf die Reise gehen, können von außen Metadaten darüber gemacht werden; bei Übertragung mittels HTTP im Header: bspw. Content-Type: text/plain; charset=UTF-8.

In einer Unicode-Codierung (UTF-8, UTF-16 u.a.) codierte Dateien können aber ein byte order mark (BOM) am Anfang haben, das (so nebenbei auch) die Zeichencodierung angibt.

Könnt ihr mir sagen wo bzw. wie ich den in der Datei verwendeten Zeichensatz herausfinden kann? Wenn ich diesen Zeichensatz im Vorfeld ermittlen könnte hätte ich auch die Möglichkeit den Zeichensatz im Editor richtig zu setzen, damit die Zeichen korrekt dargestellt werden.

„Zeichensatz“ → „Zeichencodierung“. Du kannst nur raten. Bei der Bytesequenz C3 A4 kannst du raten, dass nicht ISO 8859-1 vorliegt und das für die Zeichenfolge 'ä' stehen soll, sondern dass das UTF-8 ist und für 'ä' steht.

4. Warum erkennt der Editor den in der Datei verwendeten Zeichensatz eigentlich nicht automatisch?

Weil es nicht seine Aufgabe ist, zu raten. Es könnte ja tatsächlich 'ä' gemeint sein.

LLAP 🖖

--
“When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory