Verfasst von: duk4yl | September 9, 2008

UTF-8: session_start() Cannot send session cache limiter

Randdaten

  • PHP Version 4.4
  • Notepad als Editor
  • Notepad++ als Editor

Da ich Probleme mit den Umlauten in einigen von PHP ausgegebenen Webseiten hatte, beschloss ich alle Dateien in UTF-8 statt ASCI zu speichern. Das hat auch prima funktioniert, alle Umlaute wurden angezeigt, doch ein Haken blieb:

Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /var/www/index.php:1) in /var/www/scripte/config.php on line 4

Der Grund ist nach langem suchen gefunden: Wenn man eine Datei als UTF-8 abspeichert, wird, zumindest beim Notepad, am Anfang der Datei der „Byte Order Mark“ geschrieben. Das hat zur Folge, dass „die BOM zur Ausgabe von Zeichen [führt], so dass ohne „output buffering“ keine HTTP-Header mehr geändert werden können.“ (Auszug aus Wikipedia)

Das Byte Order Mark wird benutzt, um zu klären, in welchem UTF Format die Datei gespeichert ist (UTF-8, UTF-16, etc).

In einem Forum habe ich gelese, dass ein

header(‚Content-Type: text/html; charset=utf-8‘);

geholfen hat. Bei mir klappt das nicht.

Ich lass die Umlaute vorerst so wie sie sind. Ich kümmere mich später um dieses Problem.

EDIT:
Es gibt doch einen Weg 🙂
Wenn man den Notepad++ nutzt, kann man unter dem Menüpunkt „Format“ auf „UTF-8 Ohne BOM“ schalten. Damit ist das Dokument auf UTF-8 geschaltet, zeigt mir alle Umlaute an und der Header wird korrekt ausgeführt.

Notepad++ Bei der Umschaltung auf UFT-8 ohne BOM

Notepad++ Bei der Umschaltung auf UFT-8 ohne BOM

Informationen


Antworten

  1. vielen vielen Dank, ich hatte genau dieses Problem, und nutze auch notepad plus plus.
    aber mein Problem war mit arabischen Buchstabe. und jetzt alles funktioniert einwandfrei.
    Gruß

  2. You write very well.

  3. Ich hab das jetzt genau so gemacht mit Notepad ++. Allerdings ohne Erfolg. Das komísche dabei ist aber, dass wenn ich meinen Text als eine Variable übergebe, werden alle Zeichen richtig dargestellt.

    Kann mir jemand helfen?

    Gruß Frank

  4. Hallo Frank,

    hast du auch darauf geachtet, das vor dem Befehl „session_start()“ wirklich nichts anderes ausgeführt wird?
    Siehe dazu auch: http://www.php-fehlermeldungen.de/topic23.html

  5. Cool Danke,
    das Problem war nicht das noch was vor dem session_start() war sonderen, dass es gefehlt hab 🙂

  6. hab noch was rausgefunden wenn man
    $pdf->Write(7,“Text“);
    und nicht
    $pdf->Write(7,’Text‘);
    funktioniert alles viel besser

    Ich hoffe ich kann damit auch noch jemand helfen.

    Gruß


Hinterlasse einen Kommentar

Kategorien