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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #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.471
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: 3.578
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: 3.578
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.471
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: 3.578
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.471
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

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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