Iconv?

SuReBuRn

Mitglied
Muss eine in latin1 angelegte und beschrieben db in utf-8 konvertieren und habe folgendes versucht. Leider wird die Datei einfach nur doppelt so gross und aus "für" wird z.B. "für":

PHP:
	$filename = "dump.sql";
	// dateihandler öffnen
	if (!$handle = fopen($filename, "r+")) {
		print "Kann die Datei {$filename} nicht öffnen";
		exit;
	}
	
	//datei einlesen
	$n = fread($handle, filesize($filename));

	// dateiinhalt umwandeln
//	$content = utf8_encode($n);
	$content = iconv("ISO-8859-1", "UTF-8", $n);
	
	// datei leeren
	if (!fclose(fopen($filename, 'w+'))) {
		print "Kann in die Datei {$filename} nicht leeren";
		exit;
	}
	
	// datei schreiben
	if (!fwrite($handle, $content)) {
		print "Kann in die Datei {$filename} nicht schreiben";
		exit;
	}
	
	fclose($handle);

Weiss jemand weiter?
 
Dass die Datei „doppelt so groß“ werden, hängt an den Unterschiedlichen Kodierungen zusammen. Denn ISO 8859-1 wird mit einer 8-Bit-Kodierung kodiert (und daher auch nur 2^8 unterschiedliche Zeichen zulässt), während UTF-8 eine dynamische Kodierung ist, bei der ja nach Zeichen von 8 bis zu 32 Bit zur Kodierung benötigt werden. Der Vorteil von UTF-8 gegenüber ISO 8859-1 ist jedoch, dass alle in Unicode enhaltenen Zeichen direkt kodiert werden können.
 
Danke für die Antwort. Das Problem ist nur, das die Funktion anscheinend nix bringt. Wenn ich nun so importiere, bleiben die gleichen Umlautenprobleme wie vorher :\
 
Zurück