brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 14-04-2009, 11:47
Typomaniac
 Member
Links : Onlinestatus : Typomaniac ist offline
Registriert seit: May 2001
Ort: ---
Beiträge: 176
Typomaniac ist zur Zeit noch ein unbeschriebenes Blatt
Standard CSV Export Mysql > Umlaute defekt

Hallo liebe Community,

ich habe dieses Thema bereits mehrfach in diesem Forum gefunden – auch im Internet wurde die Frage mehr als einmal gestellt. Es war mir dennoch nicht Möglich das Problem zu lösen, weshalb ich euch hier um Hilfe bitte: Ich exportiere mit Hilfe des folgenden Codes eine Tabelle als CSV:

PHP-Code:

<?
header
('Content-type: application/x-octet-stream');
header("Content-Type: text/x-csv; charset=UTF-8");
header("Content-disposition: attachment; filename=newsletter.csv");
require(
"../config.inc.php");
$result mysql_query($sql);
$ResultPointer mysql_query("SELECT vorname, name, email FROM newsletter WHERE opt_in=1");


for(
$i 0$Export ""$i mysql_num_rows($ResultPointer); $i++)
{
    
$Daten mysql_fetch_object($ResultPointer);
 
    
$Spalte[] = str_replace("\"""\"\""$Daten->vorname);
    
$Spalte[] = str_replace("\"""\"\""$Daten->name);
    
$Spalte[] = str_replace("\"""\"\""$Daten->email);
    
    for(
$j 0$j count($Spalte); $j++)
    {
        
$Export .= "\"" $Spalte[$j] . "\"";
 
        if(
$j != count($Spalte)-1)
        {
            
$Export .= ";";
        }
    }
    
$Export .= "\r\n";
    
$Spalte "";
}
 
echo
$Export;
?>
Das klappt alles so weit gut, nur dass eben alle Umlaute zerstört sind. Die Kollation der Datenbanktabelle steht auf: utf8_unicode_ci

Weiß irgendwer, warum das nicht funktionieren will?

Vielen Dank!

tm

P.S: Ich habe zwar gesehen, dass es eine fertige Klasse für PHP > Excel gibt aber ich würde gerne generell verstehen, warum ich das Problem habe und es so lösen.

Geändert von Typomaniac (14-04-2009 um 15:31 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 14-04-2009, 12:30
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

http://dev.mysql.com/doc/refman/5.1/...t-general.html

Versuchs mal mit SET NAMES utf8.
Mit Zitat antworten
  #3 (permalink)  
Alt 14-04-2009, 13:47
Typomaniac
 Member
Links : Onlinestatus : Typomaniac ist offline
Registriert seit: May 2001
Ort: ---
Beiträge: 176
Typomaniac ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen Dank schon mal!

ich habe das gleich ausprobiert und es hat sich was geändert – allerdings irgendwie nicht so wie ich wollte ;-) Am Beispiel von 2 Namen steht nun jetzt:

(mit SET NAMES)
Janßen

(ohne SET NAMES)
Janflen

(mit SET NAMES)
Müller

(ohne SET NAMES)
M¸ller

Ach so: In der DB selbst (PHPMYADMIN) wird aber alles korrekt dargestellt

Viele Grüße,

tm
Mit Zitat antworten
  #4 (permalink)  
Alt 15-04-2009, 00:00
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

in der zusammenstellung muss ich um ein korrektes ergebnis zu bekommen

$Export .= "\"" . utf8_encode($Spalte[$j]) . "\"";

benutzen
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #5 (permalink)  
Alt 15-04-2009, 00:12
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Ein utf8_encode() auf einen UTF-8 String anzuwenden ist vollkommen Banane.

utf8_encode() konvertiert von ISO-8859-1 auf UTF-8.

http://de.php.net/manual/en/function.utf8-encode.php

Geändert von h3ll (15-04-2009 um 00:15 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 15-04-2009, 00:20
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

ich kann dir gerne mal die besipiele auf nen server spielen...

ohne utf8_encode() ist die ausgabe auch bei mir nicht richtig (unter dem gegebenen code)

du kannst mich nun auch steinigen, weil das überhaupt nciht mein bereich ist, aber kann sowas an der default_charset einstellung liegen ?
__________________
Mibau Datendesign - Online Ferienwelt

Geändert von Peacie (15-04-2009 um 00:23 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 15-04-2009, 00:27
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Peacie
ich kann dir gerne mal die besipiele auf nen server spielen...

ohne utf8_encode() ist die ausgabe auch bei mir nicht richtig (unter dem gegebenen code)
Dann lieferst du einfach keine UTF-8 Daten.

UTF-8 ist UTF-8. UTF-8iger wird es nicht mehr.

Vermutlich hast du einfach nur vergessen die Datenbankverbindung auf UTF-8 zu stellen.

Falls du die CSV-Datei mit Excel öffnest, musst du Excel bekanntgeben, dass die Datei im UTF-8 Format ist. Alleine erkennt das Excel offenbar nicht.

Geändert von h3ll (15-04-2009 um 00:36 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 15-04-2009, 00:36
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

natürlich
beim kopieren des test scriptes hab ich natürlich auch nicht meine db klasse benutzt :/
sorry
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #9 (permalink)  
Alt 15-04-2009, 00:39
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Excel? Dann ist mit der Datei wahrscheinlich alles in Ordnung. Excel erkennt UTF-8 grundsätzlich nicht. Und afaik kann man es ihm auch nicht mitteilen.
Mit Zitat antworten
  #10 (permalink)  
Alt 15-04-2009, 00:44
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 2.328
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von onemorenerd
Excel erkennt UTF-8 grundsätzlich nicht. Und afaik kann man es ihm auch nicht mitteilen.
Doch. Man geht im Menü auf öffnen, wählt die CSV-Datei aus und dann kann man den Zeichensatz angeben:

Mit Zitat antworten
  #11 (permalink)  
Alt 15-04-2009, 00:54
Peacie
 Registrierter Benutzer
Links : Onlinestatus : Peacie ist offline
Registriert seit: Nov 2003
Beiträge: 341
Peacie ist zur Zeit noch ein unbeschriebenes Blatt
Peacie eine Nachricht über ICQ schicken Peacie eine Nachricht über AIM schicken Peacie eine Nachricht über Yahoo! schicken
Standard

auch wenn du es nicht hören wolltest, aber ich halte die übergabe von mysql via php nach excell über ein csv dokument nicht als glücklich

http://phpexcel.codeplex.com/

funktioniert wirklich gut ^^
__________________
Mibau Datendesign - Online Ferienwelt
Mit Zitat antworten
  #12 (permalink)  
Alt 15-04-2009, 10:33
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Zitat:
Original geschrieben von h3ll
Doch. Man geht im Menü auf öffnen, wählt die CSV-Datei aus und dann kann man den Zeichensatz angeben:
Bei meinem Excel 2008 für Mac kann man das nicht.

Den selben Dialog erhalte ich zwar bei Daten > Externe Daten > Textdatei importieren. Allerdings kann ich dort keinen Zeichensatz wählen, sondern nur den "Dateiursprung" Mac, Windows oder DOS. Dabei geht es nur um das Line Ending - nicht mal das erkennt Excel selbst.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

MariaDB 5.5 veröffentlicht
MariaDB 5.5 veröffentlichtDie freie MySQL-Alternative MariaDB wurde in der stabilen Version 5.5.23 veröffentlicht und soll einige Verbesserungen gegenüber Oracles Communityversion von MySQL mitbringen.

16.04.2012 | Berni

Deutsche Yii Framework Community
Deutsche Yii Framework CommunitySeit dem 19.03.2012 gibt es für die Yii PHP Framework Community ein deutsches Zuhause.

20.03.2012 | dhcomputer

 

Aktuelle PHP Scripte

Advanced Login ansehen Advanced Login

Login-System und Kundenverwaltung, die sich spielend leicht in bestehende Webseiten einbauen lässt und einen enormen Funktionsumfang bietet. Ihre eigene Webseite muss mit Advanced Login nicht umständlich an ein fertiges System angepasst werden.

25.05.2012 Madden | Kategorie: PHP/ Kundenverwaltung
BROM CMS/BelCal 3 ansehen BROM CMS/BelCal 3

Spezielles CMS für Betreiber von Ferienwohnungen. Komplette Seitenerstellung online, Verwaltung mehrerer Objekte, Reservierungssystem mit sofortigem Abgleich im Belegungskalender und vieles mehr bietet dieses Content Management System.

25.05.2012 belcal2 | Kategorie: PHP/ CMS
belbit LiveSupport Script ansehen belbit LiveSupport Script

Schnellen und unkomplizierten Support im LiveSupport-Chat anbieten. Ohne Datenbank und in wenigen Sekunden installiert.

24.05.2012 EichbaumMedia | Kategorie: PHP/ Chat
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 09:55 Uhr.