Tach,
ich gehe davon aus, dass PHP unter Linux auf den Inhalt von $LANG schauen wird,
Das kann ich jetzt so nicht beobachten.
ich auch nicht. Aber ich habe herausgefunden, dass das bei Debian installierte PHP erwartet, dass Scripte UTF-8 sind unabhängig vom eingestellten Locale; laut Doku sollte PHP eigentlich ISO8859-1 erwarten, solange es nicht mit „--enable-zend-multibyte“ kompiliert bzw. mit „zend.multibyte=On“ eingeschaltet wurde sowie ein anderer Standardwert gesetzt ist. Auf meinem System ist dem aber nicht so, auch mit zend-multibyte und declare liest die PHP-CLI ISO-kodierte Dateien nicht korrekt. Ich habe es auch mal auf UTF-16 gestellt, und wenn zend.multibyte an ist, stolpert PHP zumindest schonmal nicht mehr über das BOM, aber kann dann auch keine Multibyte-Strings lesen oder verarbeiten oder ausgeben: echo "ä" in einer UTF-16 kodierten Datei gibt die Bytes e4 3f 3f aus e400 wäre das ä in UTF-16 und 3f sind Fragezeichen in UTF-8, aber so richtig Sinn ergibt das nicht (Ausgabe bleibt auch gleich egal ob default_charset auf UTF-8 oder UTF-16 steht)
PHP sagt einem nicht, welche Kodierung das System erwartet und eine Funktion zum Ermitteln von LANG gibt es meines Wissens nicht. Kann man anscheinend nur über einen Shell-Aufruf rausfinden.
Den Landes- und Sprachteil bekommt man über die Locale-Klasse, sofern vorhanden; aber das Encoding verschweigt es.
mfg
Woodfighter