[PHP]CSV EXPORT Umlaute werden nicht richtig ausgegeben.

01/26/2018 17:02 Givemoney#1
Hallo Community, ich habe folgendes Problem.

Die Symbole (!?;:&) werden angezeigt. Jedoch werden die Umlaute (Ä,Ü,ß,Ö) nicht richtig angezeigt.

Ich bekomme folgendes zu sehen: (ß, ü, Ü, Ö)

Ich denke das es ein UTF Format Fehler ist. Jedoch ist die Datenbank richtig aufgebaut. Eventuell fehlt etwas beim Select selber.

Code:
PHP Code:
header('Content-Type: text/x-csv; charset=utf-8');
header('Content-Disposition: attachment; filename=Rechnung '.$invoicenum.'.csv');
$trennzeichen ';'
$quote '"'
$suchmuster[0] = '/&/'
$suchmuster[1] = '/ß/'
$suchmuster[2] = '/ü/'
$suchmuster[3] = '/ö/'
$suchmuster[4] = '/ä/'
$suchmuster[5] = '/Ü/'
$suchmuster[6] = '/Ö/'
$suchmuster[7] = '/Ä/'
$suchmuster[7] = '/Ä/'

$test1 'ä';
$test2 'ä';


$ersetzungen[7] = '&'
$ersetzungen[6] = 'ß'
$ersetzungen[5] = 'ü'
$ersetzungen[4] = 'ö'
$ersetzungen[3] = 'ä'
$ersetzungen[2] = 'Ü'
$ersetzungen[1] = 'Ö'
$ersetzungen[0] = 'Ä'


$ResultPointer "SELECT id,description,amount,berater,mandant,content FROM `tblinvoiceitems` where invoiceid = $like";
$result mysql_query($ResultPointer);

ob_end_clean();
$fp fopen('php://output','a');

fputcsv($fp,preg_replace($suchmuster$ersetzungen,  array('Id','Anwendung','Betrag','Beraternr','Mandantennr','Mandantenbezeichnung')), $trennzeichen$quote); 

$csvarray = array('Id''Typ''Produkte','Betrag','Beraternr','Mandantennr','Firma','Kaufdatum');
for(
$i=0$i<mysql_num_rows($result); $i++) 

$Daten mysql_fetch_assoc($result); 

fputcsv($fp,preg_replace($suchmuster$ersetzungen$Daten), $trennzeichen$quote); 


exit();

 } 
01/26/2018 19:36 xShizoidx#2
Hast du bei der Datenbank das Charset auch richtig angegeben, also beim erstellen der Datenbank?

Diesen kannst du z.B. hiermit abfragen:
Code:
SET @nameDeinerTabelle := "testen";
SELECT default_character_set_name FROM information_schema.SCHEMATA 
WHERE schema_name = @nameDeinerTabelle;
Du verwendest mysql, eigentlich sollte man PDO oder MySQLI verwenden in PHP.
01/27/2018 10:37 Serraniel#3
[Only registered and activated users can see links. Click Here To Register...]

Das könnte dir helfen. Wenn die Datenbank UTF-8 ist kannst da z. B. "utf8" als String übergeben. Andernfalls kann auch das Ausgabeformat vom Webserver falsch sein auch, kannst du einfach testen indem mal die Umlaute ausgibst ohne das die aus der Datenbank kommen.