php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.03.2011, 11:53  
Neuer Benutzer
 
Registriert seit: 25.11.2010
Beiträge: 26
PHP-Kenntnisse:
Anfänger
iceteea befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] CSV Kodierung?

Hi,

ich habe gerade ein sehr spezielles Problem mit einer csv-datei, die von meinem php-script generiert wird.

Und zwar:
Die generierte CSV lässt sich nicht in die Zielanwendung importieren.
Öffne ich die CSV Datei jedoch vorher mit OpenOffice Calc und speicher sie ab,
funktioniert es.

Vergleiche ich beide Dateien nun mit notepad++, sehen sie exakt identisch aus,
auch die Kodierung ist ANSI.
Vergleiche ich sie mit einem Hex-Editor, gibt es augenscheinlich Unterschiede.

Der größte Unterschied den ich feststellen konnte ist,
dass die unter OpenOffice Calc abgespeicherte Datei 352 Byte größer ist!

Ich vermute dass das Problem durch eine falsche Kodierung zustande kommt.
Meine aktuellen Ausgabe-Header sehen so aus:

PHP-Code:
header("Content-type: text/x-csv");
header("Content-Disposition: attachment; filename=\"datei.csv\""); 
charset habe ich nach vielen erfolglosen Versuchen rausgenommen,
ebenso utf8_decode.
Zeilenumbrüche habe ich als \n und als \r versucht (man weis ja nie...).
Bin jetzt bei \n geblieben.

Die Daten mit denen die CSV Generiert wird kommen mittels POST.

Ich habe leider keinen Zugriff auf den Quellcode der Zielanwendung,
es handelt sich wohl um eine Asp.Net Applikation mit SQL Anbindung.

Wer kann helfen?

Thx in advance,
iceteea.

Geändert von iceteea (31.03.2011 um 11:59 Uhr).
iceteea ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.03.2011, 12:05  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hmm .. nach eigener Erfahrung speichert PHP die CSV in der gleichen Zeichencodierung, die du auch an den Browser sendest..

bei mir läuft die Webseite als UTF8 - ergo kommt auch utf8 in der CSV an, es sei denn ich sorge mit utf8_decode dafür , dass erzwungen wird den Text nach ISO umzucodieren.

außerdem halte ich wenig von deiner ersten header-Anweisung ....aber das ist wahrscheinlich nur subjektiv ...

ich liefere CSV mit folgenden Anweisungen aus

PHP-Code:
        $Dateiname basename($Datei);
        
$Groesse filesize($Datei);
        
$file=fopen($Datei,'r');
        
set_time_limit(0);
        if (
$file) {
            
header("Pragma: public");
            
header("Expires: 0");
            
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            
header("Cache-Control: private",false);
            
header("Content-Type: application/force-download");
            
header("Content-Type: application/octet-stream");
            
header("Content-Type: application/download");
            
header("Content-Disposition: attachment; filename=\"".$Dateiname."\";");
            
header("Content-Description: File Transfer");
            
header("Content-Transfer-Encoding: binary");
            
header('Content-Length: '.$Groesse );
            
flush();
            while (!
feof($file)) {
                print(
fread($file,4096));
                
flush();
            }
        }
        
fclose($file);
        die(); 
wobei ich bisher mit Excel keinerlei Probleme hatte - und der verwendet ja auch .NET Techniken ...

OpenOffice kann besser mit Unicode umgehen, könnte also sein, dass Openoffice deine verkorkste Codierung lesen kann, und beim Speichern dann für richtige Codierung usw sorgt ....

Wie sieht denn das eigentliche Format für deine CSV aus ? welches Trennzeichen? Benutzt du Quotes um Datenwerte ? Escape-Zeichen ? Zeilenumbruch (windows typisch ist "\n\r" = Neue zeile und wagenRücklauf)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (31.03.2011 um 12:09 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 31.03.2011, 12:15  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Auch hier wieder die Frage: Wobei helfen?

Du hast festgestellt, das deine Zielanwendung ein anderes Encoding verlangt, als die Quelle, die die CSV Datei erstellt.

Frag halt bei den Jungs der Zielanwendung nach, welches Encoding gefordert ist und änder dein Script.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 31.03.2011, 20:21  
Neuer Benutzer
 
Registriert seit: 25.11.2010
Beiträge: 26
PHP-Kenntnisse:
Anfänger
iceteea befindet sich auf einem aufstrebenden Ast
Standard

Nach ein bisschen Try&Error bin ich zu folgendem Ergebniss gekommen:
Das Script erwartet den Windows-Typischen Zeilenumbruch "\r\n" (nicht \n\r!).
Danke für den Denkanstoß!
iceteea ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Amazon AWS Power Kodierung coola Off-Topic Diskussionen 5 19.02.2011 17:56
[Erledigt] Welche Kodierung ?? puwu PHP Einsteiger 5 14.02.2011 14:23
[Erledigt] Kodierung von GET-Übergabeparametern Blackeye PHP Einsteiger 13 18.01.2011 22:19
Kodierung im Kontaktformular invidicult PHP Tipps 2010 21 21.10.2010 12:52
[Erledigt] Hex Kodierung ? puwu PHP Tipps 2010 4 16.10.2010 22:30
[Erledigt] Welche Kodierung ist das ... puwu PHP Tipps 2010 8 30.09.2010 23:53
Kodierung einer Datei bei Upload ändern goldschatz PHP Tipps 2010 2 10.09.2010 16:03
Server erkennt UTF-8 Kodierung nicht DJ_RhoxxZ PHP Tipps 2010 21 31.08.2010 18:18
UTF8 Kodierung goldschatz PHP Tipps 2010 6 11.08.2010 20:30
Kodierung Russich omex PHP Tipps 2010 4 08.07.2010 16:43
Verschiedene Kodierung innerhalb der selben Seite Frank HTML, Usability und Barrierefreiheit 4 26.06.2010 03:05
Kodierung in exif raupe_90 PHP Tipps 2009 24 27.12.2009 23:45
[Erledigt] utf8 kodierung Screeze Datenbanken 48 27.02.2009 17:35
Kodierung UTF-8 Russisch anegin PHP-Fortgeschrittene 8 24.03.2008 13:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
csv kodierung, csv codierung ändern, php csv codierung ändern, csv kodierung ändern, php header csv, php csv header encoding, php csv header, header csv encoding, csv header php, csv encoding php header, codierung csv ändern, php zeichenkodierung ändern, zeichenkodierung csv, php utf8 csv kodierung erkennen, openoffice calc zeichenkodierung ändern, csv header, csv header ändern, php content-type csv, csv.php open office, content type header disposition csv

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum