PHP Interpreter verändert meine Dateien
hotti
- php
moin,
Windows XP,
PHP Version 5.3.0
Server API Apache 2.0 Handler
Apache/2.2.14 (Win32) PHP/5.3.0
Ich hab eine .php mit der Zeile
echo "München";
in utf8 gespeichert und angezeigt mit dem Browser Mozilla 1.7.11. Als ich danch wieder nach meiner .php Datei schaute, war die plötzlich in ANSI neu gespeichert und statt dem 'ü' war da ein 'ü' zu lesen. Das Problem ist nachvollziehbar ;-)
Frage: Welche Einstellung um Gottes Willen veranlasst PHP, meine Datei zu verändern?
Bitte mal um Hinweise,
Horst Haselhuhn
Hallo hotti,
Frage: Welche Einstellung um Gottes Willen veranlasst PHP, meine Datei zu verändern?
bist du Dir sicher, dass die Veränderung erst durch den Interpreter auftritt? Mit anderen Worten: Steht in der Datei noch das richtige, wenn Du sie abgespeichert, den Editor geschlossen und sie neu geöffnet hast, ohne sie vorher einem PHP-Interpreter zum Fraß vorzuwerfen?
Grüße
Richard
Hi,
[..] ohne sie vorher einem PHP-Interpreter zum Fraß vorzuwerfen?
Ihr dürft mich heute mal (aber nur symbolisch) den PHP-Entwicklern zum Fraß vorwerfen. Sorry, Leute, ich hab Euch zu Unrecht verdächtigt!!!11
Vergebung!
Hotti
Lieber hotti,
in utf8 gespeichert
aus welchem Editor heraus?
und angezeigt mit dem Browser Mozilla 1.7.11.
Mit welchem content-type-Header?
Als ich danch wieder nach meiner .php Datei schaute, war die plötzlich in ANSI neu gespeichert und statt dem 'ü' war da ein 'ü' zu lesen. Das Problem ist nachvollziehbar ;-)
In welchem Editor?
Frage: Welche Einstellung um Gottes Willen veranlasst PHP, meine Datei zu verändern?
War da wirklich ein Schreibzugriff? Lässt sich das mittels der Dateizeiten ("zuletzt geändert am" oder "letzter Zugriff") ebenfalls nachvollziehen?
Liebe Grüße,
Felix Riesterer.
Kiun jachšy!
Ich hab eine .php mit der Zeile
echo "München";
in utf8 gespeichert und angezeigt mit dem Browser Mozilla 1.7.11. Als ich danch wieder nach meiner .php Datei schaute, war die plötzlich in ANSI neu gespeichert und statt dem 'ü' war da ein 'ü' zu lesen. Das Problem ist nachvollziehbar ;-)
Frage: Welche Einstellung um Gottes Willen veranlasst PHP, meine Datei zu verändern?
Gar keine. Die Bytes sind genau die gleichen wie vorher. Nur Dein Editor hat beim erneuten Öffnen wohl nicht gerafft, daß es sich um UTF-8 handelt und zeigt die Datei diesmal als ANSI an.
Eine BOM am Anfang würde ihm vermutlich auf die Sprünge helfen, ist aber bei PHP normalerweise keine gute Idee. Eventuell läßt sich die Standardkodierung des Editors auf UTF-8 umstellen (bei Notepad++ zum Beispiel ist sie per default ANSI, und ich habe sie aus genau diesem Grund umgestellt).
Viele Grüße vom Længlich
hi,
Gar keine. Die Bytes sind genau die gleichen wie vorher. Nur Dein Editor hat beim erneuten Öffnen wohl nicht gerafft, daß es sich um UTF-8 handelt und zeigt die Datei diesmal als ANSI an.
Stimmt, es hat nichts mit PHP zu tun, danke Eurer Hinweise kann ich das nun auch selbst nachvollziehen.
Nicht ganz nachvollziehbar ist jetzt nur noch, warum mein guter Editor das mal macht und mal nicht macht, mit meinen PerlDateien macht er das jedenfalls nicht, daher mein bl?der Verdacht ;-)
Sch?nen Sonntag,
danke und Gr??e,
Horst Haselhuhn
Hi!
Nicht ganz nachvollziehbar ist jetzt nur noch, warum mein guter Editor das mal macht und mal nicht macht, mit meinen PerlDateien macht er das jedenfalls nicht, daher mein bl?der Verdacht ;-)
Wie geht Perl mit einer BOM um? In die Ausgabe gelangt diese ja im Gegensatz zu PHP-Dateien nicht automatisch. Die BOM ist ja zwingend der erste Dateiinhalt und kann daher nicht innerhalb von <?php (und auskommentiert) zu stehen kommen. Wenn Perl die BOM ignoriert und du sie verwendest, dann besteht die Chance, dass der Editor anhand ihrer die UTF-8-Kodierung erkennen kann.
Lo!
hi Dedlfixi,
Wie geht Perl mit einer BOM um?
Nicht relevant hier ;-)
Hotti hatte nur vergessen, bei seinem Editor in der Dokumentenklasse
"html, php"
den Standart-"Zeichensatz" UTF-8 einzustellen, damit dieser nach einem erneuten Öffnen der Datei genau das auch wiedererkennt.
Perl und BOM ist ein anderes Thema für lange Winterabende...
Schönen Sonntag Euch Allen,
Hottü
(Fährt jetzt zum Wilden Fritz ins Schwabenland und testet den Kompatibilitätsmodus seiner Spracheinstellungen)
Hi!
in utf8 gespeichert und angezeigt mit dem Browser Mozilla 1.7.11. Als ich danch wieder nach meiner .php Datei schaute, war die plötzlich in ANSI neu gespeichert und statt dem 'ü' war da ein 'ü' zu lesen. Das Problem ist nachvollziehbar ;-)
Frage: Welche Einstellung um Gottes Willen veranlasst PHP, meine Datei zu verändern?
Nichts. PHP macht da gar nichts. Alles ist (dem technischen Stand entsprechend) bestens. Es ist in keinem der bekannten Dateisystemen vorgesehen, dass zu einer Datei vermerkt wird, in welcher Kodierung die darin befindlichen Daten abgelegt sind. Es gibt (leider) auch keine Metadaten, die stets an einer Datei hängen, in denen solche Information abgelegt werden könnten. Es ist also für kein Programm möglich, die verwendete Kodierung herauszubekommen und den Inhalt dementsprechend zu interpretieren.
Wenn du also eine Datei öffnest, und dem Editor nicht bekanntgibst, gemäß welcher Kodierung sie zu interpretieren sei, ist das Ergebnis zufällig. Die Information "ist in XY gespeichert" existiert nicht. Wenn das lesende Programm denkt, es sei "ANSI", dann siehtst du da das ü, wenn es annimmt, es sei UTF-8, dann bekämest du das ü.
Die einzige Möglichkeit, eine UTF-8-Datei zu erkennen wäre die BOM, aber die will man aus gutem Grund nicht.
Wenn du vorwiegend mit UTF-8 arbeitest, stell deine Werkzeuge so ein, dass sie UTF-8 als Default-Kodierung verwenden.
Lo!