• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Download-Fileformat UTF-8 im header festlegen?

Tecwan

Neues Mitglied
Hallo zusammen,

ich habe ein php-Skript, das Grafiken im SVG-Format erzeugt und dann im Browser anzeigt oder zum Download anbietet. Die Grafiken lassen sich in verschiedenen Browsern problemlos anzeigen (IE, FF, Chrome).
Die Auslieferung zum Download erfolgt mit
header( 'Content-Disposition: attachment; charset=utf-8; filename='.$fname );
und lässt das File auch unter dem gewünschten Namen abspeichern.

Aber: Rufe ich das .svg-File anschließend im Browser auf, kommt es nicht zur korrekten Anzeige.
Dies passiert, wenn Beschriftungen in den Grafiken Sonderzeichen enthalten (Umlaute genügen da schon).
Rufe ich ein solches .svg-File z-B. mit Notepad auf und speichere es ansonsten unverändert als UTF-8 codiert, wird es anschließend wie gewünscht dargestellt.

Eigentlich dachte ich, dass durch die Angabe charset=utf-8; im header bereits sichergestellt wäre, dass auch das Speichern im gewünschten Format erfolgt, aber das scheint nicht der Fall zu sein.
Habe ich da etwas falsch gemacht?
Oder hängt das am Ende vom Browser des Empfängers ab und ich kann nichts machen?
 
Hallo zusammen,

ich habe ein php-Skript, das Grafiken im SVG-Format erzeugt und dann im Browser anzeigt oder zum Download anbietet. Die Grafiken lassen sich in verschiedenen Browsern problemlos anzeigen (IE, FF, Chrome).
Die Auslieferung zum Download erfolgt mit
header( 'Content-Disposition: attachment; charset=utf-8; filename='.$fname );
und lässt das File auch unter dem gewünschten Namen abspeichern.

Aber: Rufe ich das .svg-File anschließend im Browser auf, kommt es nicht zur korrekten Anzeige.
Dies passiert, wenn Beschriftungen in den Grafiken Sonderzeichen enthalten (Umlaute genügen da schon).
Rufe ich ein solches .svg-File z-B. mit Notepad auf und speichere es ansonsten unverändert als UTF-8 codiert, wird es anschließend wie gewünscht dargestellt.

Eigentlich dachte ich, dass durch die Angabe charset=utf-8; im header bereits sichergestellt wäre, dass auch das Speichern im gewünschten Format erfolgt, aber das scheint nicht der Fall zu sein.
Habe ich da etwas falsch gemacht?
Oder hängt das am Ende vom Browser des Empfängers ab und ich kann nichts machen?

Ich denke das müsste aushelfen:
PHP:
header('Content-Type: image/svg+xml; charset=utf-8');
 
Danke, aber mit Content-type kommt es nicht zum Download, sondern nur zur Anzeige im Browser. Das hilft mir leider nicht weiter.

Immerhin: Lasse ich mir die Grafiken als image/svg+xml ausliefern (Browser, nicht Download), werden die Sonderzeichen ("XML-Verarbeitungsfehler: nicht wohlgeformt") angemahnt.

Mir scheint, dass charset=utf-8; beim Download einfach ignoriert wird - das ausgelieferte File ist egal ob mit oder ohne charset-Angabe in ANSI-Codierung zunächst unbrauchbar.

Gemeinerweise kann ich die Ausgabetexte vor Auslieferung nicht einfach mit utf8-encode() umwandeln: Das zerschießt nämlich die Textdarstellung im Browser, auch wenn dafür die Anzeige im gedownloadeten File (UTF-8-Codierung) klappt. :confused:

Fällt jemandem vielleicht eine Alternative zur Auslieferungsweiche mit und ohne utf8-encode() ein?
 
Zurück
Oben