426
Biber
goscho
jadefalke
LauneBaer
MrNetman
Penny.Cilin
Skyemugen

Frage ist gelöst
Fopen und Umlaute

Mitglied: ottscho
04.02.2012
08:53:14 Uhr
555 Aufrufe
2 Antworten
Hi,

ich importiere mit einem PHP Script Datensätze in ein Onlineshop.

Die original Daten stehen in einer CSV mit Seminkolon getrennt und können, wenn ich diese in einem Test-Editor lese im Klartext gelesen werden.
Hier werden alle Sonderzeiche korret dargestellt. Sogar 8½ etc.

Öffne ich die Datei z.B. im Excel, so sieht hier auch noch alles super aus.

Lese ich aber die Datei mit fopen ein, so habe ich in den Variablen z.B. Statt "Schnürer Comfort" dies "Schnürer Comfort" und statt.

Was mache ich falsch, bzw. wie kann ich den Fehler korrigieren?

Hier ein auszug aus dem Code:

01.
 
02.
$row = 1; // Anzahl der Arrays 
03.
			$handle = fopen ("transfer/Exportwebshop.csv","r"); // Datei zum Lesen öffnen 
04.
			// Die erste Zeile mit den Spaltennamen auslesen 
05.
			$data = fgetcsv ($handle, 100000, ";"); 
06.
			if(is_array($data)) { 
07.
			   foreach($data AS $cellNr => $cellName) { 
08.
				   $cellNamesArray[$cellNr] = $cellName; 
09.
10.
11.
			$return=false;		 
12.
			while ( ($data = fgetcsv ($handle, 100000, ";")) !== FALSE ) { // Daten werden aus der Datei 
13.
				$num = count ($data); // Felder im Array $data 
14.
				//var_dump('row: '.$row); 
15.
				//var_dump('offset: '.$offset); 
16.
				//var_dump('step: '.$step); 
17.
				 
18.
				if ($row <= $offset) { 
19.
					$row++; // Anzahl der Arrays wird 
20.
					continue; 
21.
22.
				if ($row > $offset+$step) {	 
23.
 
24.
					$count = 0; 
25.
					for ($c=0; $c < $num; $c++) { // FOR-Schleife, um Felder des Arrays auszugeben 
26.
						$feld[$cellNamesArray[$c]] = $data[$c];				 
27.
						$count++;	 
28.
29.
 
30.
					if ( $feld['shop_nr'] == 1) { 
31.
						self::$row = $row; 
32.
						$return=true; 
33.
						break; 
34.
35.
36.
				$row++; // Anzahl der Arrays wird 
37.
				 
38.
				$count = 0; 
39.
				for ($c=0; $c < $num; $c++) { // FOR-Schleife, um Felder des Arrays auszugeben 
40.
					$feld[$cellNamesArray[$c]] = $data[$c];				 
41.
					$count++;	 
42.
43.
				 
44.
				 
45.
				var_dump($feld); 
46.
				exit; 
47.
48.
 


Vielen Dank,

Grüße
Ottscho

Mitglied: ottscho
ottscho schreibt am 04.02.2012 um 09:18:08 Uhr
konnte es lösen.

utf8_decode()
Mitglied: nxclass
nxclass schreibt am 06.02.2012 um 23:34:13 Uhr
Also hast Du nur eine UTF-8 codierte CSV Datei eingelesen und die Daten ISO codiert ausgegeben (bzw. anzeigen lassen)

Evtl. hätte auch schon ein
01.
header( 'Content-Type: text/html; charset=UTF-8' );
am Anfang des Scripts gereicht.
mehr ...Ähnliche Beiträge