Antwort an „Nico R.“ verfassen

Hallo Rolf,

der entscheidende Teil fehlt bei dir. Der ist offenbar das Einlesen der ANSI-codierten CSV-Datei. Ich habs jetzt mal minimal reduziert nachgebaut. Das Phänomen tritt sogar schon ohne weitere Behandlung der Daten auf. Es genügt eine einfache Ausgabe.

Zum Online-Beispiel

Je nach Button wird Fetch-Datei 1 oder 2 geladen. Einziger Unterschied ist die Ausgabe der CSV-Daten. Wenn ich das var_dump() des csv_array deaktiviere, werden im db_array die Umlaute angezeigt, mit var_dump() nicht. Hier noch der PHP-Teil dazu:

if($csv = fopen("csv_upload.csv", 'r')) {

    $db_array = array();
	$db_array[] = "Schuster";
	$db_array[] = "Müller";
	
	$csv_array = array();
	while(!feof($csv)) {
		array_push($csv_array, fgetcsv($csv, null, ","));
	}
	
	echo "<h1>db_array</h1>";
	echo "<pre>";
	var_dump($db_array);
	echo "</pre>";	
	
	echo "<h1>csv_array</h1>";
	echo "<pre>";
    // bei Deaktivierung korrekte Umlaut-Darstellung im db_array
	var_dump($csv_array); 
	echo "</pre>";
	
}

Es scheint ja serverseitig eine Umschaltung der Codierung stattzufinden, sobald er registriert, dass in dem Script an irgend einer Stelle Nicht-UTF-codierte Daten dargestellt werden sollen. Das Setzen dieses headers hat keine Veränderung gebracht:

header('Content-Type: text/html; charset=utf-8');

Hier hätte ich erwartet, dass zwar das csv_array ohne Umlaute dargestellt wird, dafür aber das db_array korrekt. Aber nee, keene Änderung. Hat noch jemand eine Idee oder eine andere Erklärung?

Schöne Grüße

Nico

freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar
freiwillig, öffentlich sichtbar

Ihre Identität in einem Cookie zu speichern erlaubt es Ihnen, Ihre Beiträge zu editieren. Außerdem müssen Sie dann bei neuen Beiträgen nicht mehr die Felder Name, E-Mail und Homepage ausfüllen.

abbrechen