hotti: txt-Datei includen - Formatierung u. Sonderzeichen

Beitrag lesen

hi,

Wie wird eine txt-Datei so includet, dass die Formatierung (Umbrüche und Tabs und so) erhalten bleibt und Sonderzeichen, die roh vorliegen, als dezimal (etwa ö als ö) ausgegeben werden?

Was in einer Datei steht, sind Bytes und das ist genau dasselbe, was auf STDOUT errwartet wird: Bytes. Datei einlesen, heißt Bytes einlesen. Datei ausgeben heißt: Bytes ausgeben.

Zeichen in einer Datei sind auch nur Bytes. Zeilenumbrüche sind Bytes, Tabs sind Bytes. Include die Datei und Du kriegst das alles: Deine Bytes.

Wenn Deine Bytes einen lesbaren Text darstellen sollen, kommt die Zeichenkodierung ins Spiel. Möglicherweise ergeben Deine Bytes einen utf-8-kodierten Text. Dann musst Du dem Ausgabegerät mitteilen, dass das utf-8-kodierter Text ist. Das Ausgabegerät (Browser, Terminal, Editor...) macht dann aus den Bytes wieder sichtbare Zeichen.

Ein utf-8-kodiertes 'ö' wird mit den Bytes C3 B6 in einer Datei abgebildet. Schicke diese Bytes zum Browser, sende zum Content-Type den Parameter ;charset=utf-8 und siehe da, Du siehst ein 'ö' ohne dass Du irgendwelche Umwandlungen machen musst. Da musst du nicht einmal die Codepoints der Zeichen kennen, die in der Datei drin sind. Es müssen nur die richtigen Bytes sein.

Horst