Bei UTF-8 keine header() möglich
Xarden
- php
0 Sven Rautenberg0 Xarden
0 Tom
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
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
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
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