molily: txt-Datei includen - Formatierung u. Sonderzeichen

Beitrag lesen

Hallo,

Also rohe Zeichen sind schon "legitim"?

Natürlich. Die Entity- bzw. Zeichenreferenzen ö, ö und ö wurden ja nur erfunden, um Unicode-Zeichen in einer Kodierung darzustellen, die dieses Zeichen nicht direkt kodieren kann. Zum Beispiel enthält US-ASCII kein ö. Es gibt aber dutzende andere praktisch verwendbare Kodierungen, die diese Zeichen kodieren können, z.B. ISO-8859-1 oder UTF-8. Wenn man diese verwendet, braucht man ö und Co. nicht.

Firefox gibt jedenfalls ö usw. als das komische Karo aus. Ich arbeite bisher nur clientseitig - hab UTF-8 bisher nur im HTML mit <meta charset="UTF-8" /> gesetzt ... Also wenn UTF-8 auch serverseitig gesetzt ist (ist es dann clientseitig übrehaupt noch nötig?), sollten rohe Zeichen - in welchen Dateien auch immer - kein Problem sein?

Du musst zwei Sachen unterscheiden:

  • Die tatsächliche Kodierung eine Dateien (z.B. ISO-8859-1 oder UTF-8). Die Kodierung bestimmt, wie die Zeichen als Bytes gespeichert sind.
  • Eine Kodierungsangabe, die verarbeitetenden Programmen die Kodierung mitteilt (in HTML <meta charset="utf-8">; in HTTP der Content-Type-Header mit charset-Angabe; in Dateien ggf. ein UTF-8-BOM, in der Regel fehlt aber eine solche keine Kodierungsangabe)

Eine Datei hat immer eine bestimmte Kodierung. Bei einer Textdatei ist i.d.R. der Texteditor beim Speichern dafür verantwortlich; prüfe also einmal dessen Einstellungen.

Ein verarbeitendes Programm wie der Browser muss die korrekte Kodierung kennen. Wenn du alle beteiligten Dateien als UTF-8 speicherst, kannst du sie einfach zusammenmantschen und z.B. mit PHP ein HTML-Dokument daraus generieren. Du musst dann aber immer noch im HTML die Kodierung mit <meta charset="utf-8"> angeben, damit der Browser sie korrekt erkennt.

Beim Einlesen und Verarbeiten könnten dir folgende Funktionen weiterhelfen:

http://de3.php.net/file_get_contents – Liest den Dateiinhalt in einen String ein
http://de3.php.net/htmlspecialchars – Macht Zeichen unschädlich, die in HTML eine Bedeutung haben
http://de3.php.net/nl2br – Fügt br-Elemente bei Zeilenumbrüchen ein. Besser wären p-Elemente, dazu muss man Reguläre Ausdrücke kennen. Dasselbe gilt Zeilen mit Tabulator-Einrückungen.

Mathias