Zeilenende und Kodierung einer Textdatei bestimmen.

Prophet05

Erfahrenes Mitglied
Moin,

mich würde mal interessieren wie man die Zeichenkodierung und das Zeilenendezeichen einer Textdatei bestimmt. Da einfache Textdateien keinerlei Header-Informationen enthalten welche darüber aufschluss geben fände ich das mal ganz interessant.

Das Zeilenende könnte man ja recht einfach herausfinden indem man einfach die häufigkeit des vorkommens von CR und LF auswertet aber die bestimmung der Zeichenkodierung ist mir ein Rätsel...

Ich habe auch schon gegoogelt aber nichts verwertbares gefunden. Unter Wikipedia habe ich nur herausgefunden das es keinen Header gibt der einem in dieser Hinsicht weiterhilft.

Gruß,
Prophet05
 
Hi,

laut Hexeditor beginnen Unicode-kodierte Textdateien mit FFFE

Textdatei mit dem Inhalt "Test":
Code:
// ANSI

54 65 73 74
Code:
// UNICODE

ff fe 54 00 65 00 73 00 74 00

Gruß
.
 
Dass UTF-kodierte Dateien eine BOM haben, ist nicht immer gegeben. Denn bei UTF-8 ist sie aufgrund der nur einen möglichen Reihenfolge der Bits gar nicht nötig und kann sogar – etwa bei PHP-Skriptdateien, in denen der HTTP-Header verändert werden soll – sogar zu Problemen führen.

Dennoch ist es möglich mit etwa einem regulären Ausdruck zumindest UTF-8-kodierte Bitsequenzen zu identifizieren.
 
Ein weiteres Problem wird sein, dass von der Zeichenkodierung auch nicht auf den Zeichensatz geschlossen werden kann.

Denn angenommen du weißt also nun, dass eine 8-Bit-Kodierung verwendet wurde, weißt du aber immer noch nicht, für welche Zeichen die einzelnen Bits stehen.
Denn schaut man sich alleine mal die Zeichensatzfamilie ISO 8859 an, werden alle mit derselben einfachen 8-Bit-Kodierung kodiert. Ihre Zeichen sind aber bis auf die ersten 128 Zeichen (da diese mit denen des ASCII-Zeichensatz übereinstimmen) unterschiedlich.

Genau aus diesem Grund ist es auch wichtig, die verwendete Zeichenkodierung beziehungsweise den Zeichensatz, von dem dann auf die Zeichenkodierung geschlossen werden kann, immer im HTTP-Header anzugeben.
 
Schön und gut aber wenn ich jetzt eine Textdatei habe (ohne BOM) und sie liegt auf meiner Festplatte dann weiß ich trotzdem nicht welche Kodierung sie hat. Wie bestimmen Editoren sowas? Ein mime type kann in diesem fall ja ebenfalls nicht übergeben werden da es sich nicht um ein protokoll wie http handelt...
 
Schön und gut aber wenn ich jetzt eine Textdatei habe (ohne BOM) und sie liegt auf meiner Festplatte dann weiß ich trotzdem nicht welche Kodierung sie hat. Wie bestimmen Editoren sowas? Ein mime type kann in diesem fall ja ebenfalls nicht übergeben werden da es sich nicht um ein protokoll wie http handelt...
Die Editoren verwenden standardmäßig das Encoding entsprechend der eingestellten Sprache im OS. ;)
 
Blödsinn Christian, wie sollten denn da Daten aus Fremdsystemen korrekt dargestellt werden?

Das Encoding wird für gewöhnlich am Anfang der Datei bestimmt.

Die ersten zwei Byte in HEX:

FFFE: Unicode
FEFF: Unicode Big Endian
EFBB: UTF-8

Nichts von all dem: ANSI
 
Gut wenn man markierte UTF Dateien erkennt, trotzdem kann ich die Kodierung jeglicher anderer Textdateien nicht bestimmen.

Wenn man unter Kodierung guckt findet man ja doch einiges mehr als man denkt. Und die Liste auf der Seite zeigt ja nur einige europäische Kodierungen.
 

Neue Beiträge

Zurück