Xarden: Bei UTF-8 keine header() möglich

Hi Forum,

Hab jetzt angefangen Seite UTF-8 kodiert zu schreiben. Wenn ich allerdings einen Header mit den Befehl header() senden möchte erhalte ich folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at C:\Programme\xampp\htdocs\test\index.php:1) in C:\Programme\xampp\htdocs\test\index.php on line 2

Wenn ich mein Skript ANSI kodiert speichere funktioniert alles. Als Editor verwende ich Notepad++. Ich nehme an das das Problem damit zusammen hängt das vor jedem UTF-8-Dokument folgende Zeichenkette ausgegeben wird (sieht man nur wenn man auf Hex-Ansicht geht):



Wenn ich diese Zeichen lösche wird die Kodierung automatisch auf ANSI umgestellt. Kann man PHP irgendwie sagen das er Skripte UTF-8 kodiert verarbeiten soll?

Mein Skript:

<?php  
    header("content-type: application/xhtml+xml; charset=UTF-8");  
?>

Mfg Xarden

  1. Moin!

    Ich nehme an das das Problem damit zusammen hängt das vor jedem UTF-8-Dokument folgende Zeichenkette ausgegeben wird (sieht man nur wenn man auf Hex-Ansicht geht):

    

    Das ist die BOM. Man braucht sie bei UTF-8 nicht, und sie stört PHP beim Headersenden, weil sie eine Ausgabe provoziert, die die Header abschickt.

    Deshalb: PHP-Skripte ohne BOM speichern.

    Wenn ich diese Zeichen lösche wird die Kodierung automatisch auf ANSI umgestellt. Kann man PHP irgendwie sagen das er Skripte UTF-8 kodiert verarbeiten soll?

    Schuld ist dein Editor. Der sucht irgendwas, was ihn entscheiden läßt, ob die Datei UTF-8 oder nicht ist. Die BOM ist da sehr hilfreich. Wenn aber im Programmtext sonst nirgends Umlaute etc. benutzt werden, ist eine UTF-8-Datei identisch mit einer ANSI-Datei, der Editor kann es also nicht entscheiden.

    Schreib testweise mal an den Anfang deines Skriptes einen PHP-Kommentar, in dem Umlaute enthalten sind. Ich habe das beispielsweise mal so gemacht:

      
    <?php  
    // ÜTF-8  
    
    

    Dann weiß man optisch, dass die Datei UTF-8 ist, und der Editor erkennt am Dateianfang das UTF-8-Umlautzeichen und kann entsprechend reagieren.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hi Sven,

      THX. Dein Tipp hat zwar nicht geholfen aber deine Aufklärung hat mich befähigt als Kodierung "UTF-8 (ohne BOM)" auszuwählen!

      Mfg Xarden

  2. Hello,

    das Problem hatten Andere auch schon:

    http://forum.de.selfhtml.org/archiv/2007/2/t146686/#m951831

    Vielleicht helfen dir die Forumsbeiträge, wenn Du die Suche benutzt:

    "category:PHP BOM utf-8"

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau