mit diesen zwei Befehlen erfolgt die Ausgabe:
header("Content-type: text/xml; charset=utf-8");
print $xml;
Das Problem ist, dass am Anfang IMMER das BOM erscheint, was den
Firefox zu einer Fehlermeldung veranlasst (im IE als Kastl ganz am
Anfang des Quelltextes). im xml-String ist _kein_ BOM Auch wenn ich
nach dem header-Befehl nur ein "hallo" ausgebe, erscheint das BOM.
Hat das evtl. irgendwas mit der htaccess- oder Apache-config-datei zu
tun?
Die Ausgabe geht an einen anderen Server, der den xml-String
weiterverarbeitet, deshalb sollte da das BOM nicht drin sein.
Wer weiss Abhilfe?
Gruss, Helmut
Dann befindet sich der BOM eben entweder in deiner PHP Datei oder in
einer davon inkludierten Datei. Von alleine oder durch Apache kommt da
nichts hin (für diejenigen, die es genau wissen wollen: natürlich ginge
es mit Apache2 zB mit Ausgabefiltern; das diese hier einen BOM
platzieren halte ich für weitgehend unwahrscheinlich).
KP
> Das Problem ist, dass am Anfang IMMER das BOM erscheint, was den
> Firefox zu einer Fehlermeldung veranlasst
Kann es sein, dass eine Deiner eingebundenen PHP-Dateien selber einen
BOM enthält?
Michael
> Dann befindet sich der BOM eben entweder in deiner PHP Datei oder in
> einer davon inkludierten Datei.
Danke für den Tipp. Jetzt haben wir aber das Problem, dass anscheinend
fuenf PHP-Files betroffen sind (BOM am Dateianfang, mit _einem_ Hex-
Editor festgestellt), aber der einzige (andere) Editor, der die Dinger
eliminieren kann, erkennt das BOM nur bei _einer_ der fuenf Files.
Gibt es da ein probates Mittel, mit dem man die Dinger eliminieren
kann?
Gruss, Helmut
> ich versuche jetzt schon seit Stunden eine simple, wohlgeformte XML-
> Datei auf den Browser rauszuschicken. Beginnt ganz normal mit
> <?xml version="1.0" encoding="utf-8"?>
Also einer überflüssigen Zeile. UTF-8 ist eine der XML-Defaultcodierungen.¹
> mit diesen zwei Befehlen erfolgt die Ausgabe:
> header("Content-type: text/xml; charset=utf-8");
^ ^
Darin ist ein Leerzeichen zuviel, und möglicherweise wird "Content-Type"
benötigt.²
> print $xml;
>
> Das Problem ist, dass am Anfang IMMER das BOM erscheint, was den
> Firefox zu einer Fehlermeldung veranlasst (im IE als Kastl ganz am
> Anfang des Quelltextes).
Na lego, das XML-Dokument ist ja dann nicht mehr wohlgeformt.²
> im xml-String ist _kein_ BOM
Aber wahrscheinlich am Anfang Deines Scripts.
> Auch wenn ich nach dem header-Befehl nur ein "hallo" ausgebe, erscheint
> das BOM. Hat das evtl. irgendwas mit der htaccess- oder Apache-config
> datei zu tun?
Ja, wenn Du oder Dein Webhoster nicht aufgepasst haben, enthält die
Konfiguration (.htaccess oder httpd.conf bzw. apache*.conf) vielleicht noch
die veraltete Voreinstellung
AddDefaultCharset ISO-8859-1
was zu
Content-Type: text/xml; charset=ISO-8859-1
führt.³
Wenn Deine UTF-8-codierten Quelltexte dann einen BOM⁵ (vor dem `<?php')
haben, wird dieser (EF BB BF) als drei Zeichen aus ISO-8859-1 dargestellt:
. Auch und insbesondere wenn Dein Headerfeld-Name nicht genau mit diesem
Default übereinstimmt (siehe oben).
> Die Ausgabe geht an einen anderen Server, der den xml-String
> weiterverarbeitet, deshalb sollte da das BOM nicht drin sein.
> Wer weiss Abhilfe?
Response-Header analysieren (z.B. mit "Live HTTP Headers"-Extension⁶)
und/oder Webhoster LARTen.
PointedEars
___________
¹ <http://www.w3.org/TR/REC-xml/#charencoding>
² <http://www.w3.org/TR/xml/#sec-well-formed>
³ <http://tools.ietf.org/html/rfc2616#section-14.17>
⁴ <https://issues.apache.org/bugzilla/show_bug.cgi?id=23421>
<http://httpd.apache.org/docs/2.0/mod/core.html#adddefaultcharset>
⁵ <http://de.wikipedia.org/wiki/Byte_Order_Mark>
⁶ <https://addons.mozilla.org/de/firefox/addon/live-http-headers/>
--
Java hat in etwa soviel mit JavaScript zu tun, wie Gummi mit Gummibärchen
;-)
-- Alexander Clauss
in <1fkgjxx.pels4b1saxyvaN%acl...@hrzpub.tu-darmstadt.de>
> Karl Pflästerer wrote:
>> Dann befindet sich der BOM eben entweder in deiner PHP Datei oder in
>> einer davon inkludierten Datei.
>
> Danke für den Tipp. Jetzt haben wir aber das Problem, dass anscheinend
> fuenf PHP-Files betroffen sind (BOM am Dateianfang, mit _einem_ Hex-
> Editor festgestellt),
Sagte ich ja.
> aber der einzige (andere) Editor, der die Dinger eliminieren kann, erkennt
> das BOM nur bei _einer_ der fuenf Files.
Weshalb nimmst Du nicht den Hex-*Editor*?
> Gibt es da ein probates Mittel, mit dem man die Dinger eliminieren
> kann?
Ja, Dateien neu ohne BOM speichern. Oder einfach den Webserver richtig
konfigurieren.
PointedEars
--
var bugRiddenCrashPronePieceOfJunk = (
navigator.userAgent.indexOf('MSIE 5') != -1
&& navigator.userAgent.indexOf('Mac') != -1
) // Plone, register_function.js:16
PHP zum Beispiel?
Ein utf-8 BOM ist "\xEF\xBB\xBF"; ersetze einfach diese 3 Zeichen am
Anfang der Datei durch nichts.
sed, perl, awk ... gehen ebenso.
KP