Tach!
- 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?
Ja. Das ist immer so. Texte sind immer auf irgendeine Art und Weise kodiert, weil ja immer nur Zahlenwerte gespeichert werden und eine Zuordung zwischen Buchstabe/Zeichen zu einer bestimmten Zahl getroffen werden muss. Historisch bedingt gibt es aber leider eine Vielzahl solcher Zuordnungsvorschriften.
- 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 er halt einem bestimmten Zahlenwert ein anderes Zeichen zuordnet, dann wird das eben das andere angezeigt.
- Wie kann ich eigentlich den Zeichensatz einer *.txt Datei herausfinden?
Da gibt es wie bei Verschlüsslung kein Patentrezept. Wenn der Schlüssel nicht bekannt ist, muss man probieren oder raten.
Irgendwo muss ja in den Metadaten der Datei festgelegt werden mit welchem Zeichensatz die Zeichen in der Datei kodiert wurden.
Schön wärs. Man hat versäumt, ein solches System zu implementieren und es gibt bis heute kein derartiges (mir bekanntes).
Zumindest im HTTP gibt es die Möglichkeit, eine Kodierungsangabe in den Headern mitzusenden. Aber wo der Server die Kodierungsinformation hernimmt, ist sein Problem. Meist ist das fest eingestellt, weil derjenige, der die Dateien da hinkopiert hat, die verwendete Zeichenkodierung kannte und den Webserver entsprechend konfigurierte.
Könnt ihr mir sagen wo bzw. wie ich den in der Datei verwendeten Zeichensatz herausfinden kann?
Versuche sie nach bestimmten Kodiervorschriften zu lesen. Wenn das Resultat lesbar ist, dann wird es wohl diese Kodierung sein. Das kann man aber erst sagen, wenn man alle vorkommenden Zeichen überprüft hat.
Wenn ich diesesn 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.
Ja, ist aber nicht.
- Warum erkennt der Editor den in der Datei verwendeten Zeichensatz eigentlich nicht automatisch?
Geht prinzipbedingt nicht. Man kann lediglich bei Mehrbyte-Kodierungen feststellen, ob eine bestimme Bytefolge eine gültige Sequenz ergibt. Das kann aber auch nur Zufall sein.
Ein-Byte-Kodierungen kann man nur anhand des Ergebnisses beurteilen. Schau dir mal die Tabelle der ISO-8859-Kodierungen an. Welches Zeichen zum Beispiel das Byte A1 repräsentiert, kann man nicht von sich heraus sagen. Das braucht eine Plausibilitätskontrolle.
Man kann sich mit Ausschlusskriterien das Leben einfacher machen, wenn nur ISO-8859-1 und UTF-8 infrage kommen. Dann kann man testen, ob es gültiges UTF-8 ist oder wenn nicht, ist es eben die andere. Aber wenn die Möglichkeit besteht, dass es eine andere Ein-Byte-Kodierung sein könnte, hat man Pech.
Glossar:
Ein-Byte-Kodierung: Jedes Zeichen entspricht einem Byte, jedes Byte einem Zeichen. Insgesamt lassen sich damit nur 256 Zeichen repräsentieren.
Mehr-Byte-Kodierung: Ein Zeichen kann mit mehreren Bytes (festgelegten Sequenzen) kodiert werden. Damit sind mehr als 256 Zeichen repräsentierbar. Nur die korrekte Sequenz ergibt wieder ein Zeichen.
dedlfix.