2011-01-12 14 views
0

Salaam Jungs,Wie kann ich das verschlüsseln?

ich einen Bericht exportieren möchten über php zu übertreffen, schrieb ich diesen Code:

header("Expires: 0"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 
header("Content-type: application/vnd.ms-excel; charset=UTF-8"); 
header("Content-Disposition: attachment; filename=test.xls"); 

$data = html_entity_decode($data ,ENT_NOQUOTES,'utf-8'); 
$data = chr(255).chr(254).iconv("UTF-8","UTF-16LE",$data); 

print $data; 
exit(); 

aber es funktioniert nicht gut, mein Projekt ist arabisch und ich muss alle Zeichen kodieren, so freundlich informieren Sie mich, wie kann ich damit umgehen?

Mit besten Grüßen,

Mike

+0

Sie uns bitte sagen, was genau nicht funktioniert! Wie sehen Input und Output aus? – markus

+0

meine Eingabe ist: forلام zum Beispiel und meine Ausgabe ist: ÿþ – Freeman

+1

Was sind Ihre Daten? Sie schreiben Header für XLS-Datei, aber XLS-Datei ist ein Binärformat, es kann nicht nur codierten Text haben. Was versuchst du zu machen? – StasM

Antwort

3

application/vnd.ms-excel hat keinen charset= Parameter, weil es nicht ein Textformat ist. Sie schreiben ziellos keine gültige Excel-Datei. Ihr Code ist vermutlich eine CSV-Datei oder etwas auszugeben. So die entsprechend Header ändern und es versuchen:

header("Content-type: text/csv; charset=UTF-8"); 
header("Content-Disposition: attachment; filename=test.csv"); 

Überspringen Sie die BOM und reencoding Sachen. Nun, okay: Sie könnten die Stückliste entsprechend How can I output a UTF-8 CSV in PHP that Excel will read properly?

benötigen Wenn Sie eine Excel-Datei schreiben möchten, dann lesen Sie im BIFF-Format (das es eigentlich verwenden soll). Ich bin mir nicht sicher, wie und ob es internationale Zeichen unterstützt. Aber Sie sollten eine Excel-Writer-Bibliothek verwenden sowieso:

+0

BOM kann für einige Versionen von Excel erforderlich sein, um UTF-8 beim Import zu verstehen, siehe: http: // stackoverflow.com/questions/155097/microsoft-excel-mangles-diakritisch-in-csv-files – StasM

+0

@StasM: Du hast recht, nur einen weiteren Frage-Link darüber hinzugefügt. – mario

+2

Der Parameter * charset * hängt nicht davon ab, ob es sich um ein Textformat handelt oder nicht. Es liegt vielmehr daran, dass diese Informationen in das Dokument selbst eingebettet sind. – Gumbo

0

ist es wichtig, dass diese Zeilen Code ausgeführt werden, bevor irgendeine Ausgabe. Das bedeutet, dass wenn Sie zuvor irgendwelche print/echo-Kommandos haben, dies fehlschlägt.

auch, HTML oder sogar weißen Räume in einer PHP-Datei, außerhalb von

<?php 

Tags wird es für Sie ruinieren :)

Verwandte Themen