Umlauteproblem

Hallo an Alle,

ich weiss nicht mehr weiter. Das Replace funktioniert nicht. Ich versuche Umlaute in einer Datei durch
HTML zu ersetzen aber es funktioniert nicht. Hat einer Ideen?

Hier ein Stück PHP (war ursprünglich von Rainer (DWD))


$localFile = IPS_GetKernelDir()."webfront\\user\\WetterFtpDWD\\berichte\\".$berichte[$i];
   	//$localFile = "C:/IP-Symcon/webfront/user/WetterFtpDWD/berichte/".$berichte[$i];
   	$handleBerichte = fopen($localFile, 'wb+');
		if(ftp_fget($conn_id, $handleBerichte, $tage[$i].$time, FTP_BINARY))
		{
			 if($debug) echo $tage[$i].$time." wurde erfolgreich nach ".$localFile." geschrieben.
";
		}
		else
		{
			if($debug) echo "Download von ".$tage[$i].$time." zu ".$localFile." war nicht möglich.
";
		}
		$replaceBerichte = file_get_contents("../webfront/user/WetterFtpDWD/berichte/".$berichte[$i]);
		//echo $replaceBerichte;
		$umlaute = array('ä','ö','ü','Ä','Ö','Ü','ß');
		$replace = array('ä','ö','ü','Ä','Ö','Ü','ß');
		$replaceBerichte = str_replace($umlaute, $replace, $replaceBerichte);
		//echo $replaceBerichte;
		$replaceBerichte = str_replace("Copyright (c) Deutscher Wetterdienst", "", $replaceBerichte);
		$replaceBerichte = preg_replace('/([\w]{4}[\d]{2}) ([\w]{4}) ([\d]{6})/', "", $replaceBerichte);
		$replaceBerichte = preg_replace('/\b[A-Z]{1}+[a-z]{4,}\b.*([:].*)/', "", $replaceBerichte);
		$replaceBerichte = str_replace("<br></br>", "", $replaceBerichte);
		$replaceBerichte = str_replace("=", "", $replaceBerichte);
		$replaceBerichte = str_replace(chr(1), "", $replaceBerichte);
		$replaceBerichte = str_replace(chr(3), "", $replaceBerichte);
		// Datei zum ändern öffnen
		echo $replaceBerichte;
		$handleBerichte = fopen($localFile, 'wb+');
		fwrite($handleBerichte, $replaceBerichte);

Danach sieht es immer noch so aus…:

<h2>Vorhersage für Thüringen für heute</h2>

<p>

Schauer und Gewitter mit Starkregen.

</p>

<p>

Heute Abend gibt es neben kurzen Auflockerungen wiederholt Schauer und Gewitter. Sie sind teilweise mit Starkregen um 20 l/qm in einer Stunde und kleinkörnigem Hagel verbunden. Gebietsweise kann sich der Niederschlag bei wiederholt auftretenden Schauern bzw. Gewittern auf um 30 l/qm in 6 Stunden summieren. Im Eichsfeld und am Südharz können örtlich auch unwetterartige Niederschlagsmengen von mehr als 25 l/qm in einer Stunde oder mehr als 35 l/qm in 6 Stunden erreicht werden. Bei schwachem, nur in Gewitternähe böig auffrischendem Südwestwind, liegen die Temperaturen bei 16 bis 19, im Bergland bei 12 bis 16 Grad. In der Nacht zum Dienstag lassen die Niederschläge teils nur zögerlich nach. Die Bewölkung bleibt stark. Bei schwachem Wind aus unterschiedlichen Richtungen sinkt die Temperatur auf 13 bis 9 Grad.

</p>

<p>

<p></p>

Wenn der Text in UTF-8 kodiert ist, dann funktioniert es natürlich so nicht. Ggf. musst du diesen korrekt umkodieren.

paresy

Wann gibt es denn mal eine allgemeine Lösung für die ganzen Umlautproblemen an den verschiedensten Stellen, das war schon seit erscheinen der V4.0 versprochen aber leider tut sich da noch so gar nix… :mad:

Hallo mws,

dieses Problem hier hat nichts damit zu tun, dass in den Logfiles die Umlaute falsch dargestellt werden. Sofern du weitere Informationen oder Probleme hast, schreibe Sie noch einmal in das entsprechende Thema rein.

paresy

Das Problem tritt immer noch auf:

[ul]
[li]im Webfront wie hier im ersten Beitrag beschrieben und davon haben schon mehrere Leute berichtet
[/li][li]In den IPS Libraries, da kann man nirgendwo ein Element mit Umlauten ansprechen ohne das die Installation des jeweiligen Moduls fehlschlägt (was mit 3.4 noch def. ging.
[/li][/ul]Soweit ich weiß sollte es mal ein Skript geben, welches die benötigten Umstellung automatisch erledigt. Davon habe ich bis jetzt noch nichts gesehen.

Dass diese Problematik bei einer Umstellung auftritt ist ärgerlich (dafür sollte es Tests geben) kann aber passieren.
Dass nach über drei Monaten aber immer noch keine Lösung dafür herausgebracht wurde, obwohl schon frühzeitig durch verschiedene Anwender darauf hingewiesen und Abhilfe versprochen wurde finde ich dann doch traurig.
Zumal das hier ja kein privates Liebhaber Projekt ist sondern ein kommerzielles Produkt welches ja auch jedes Jahr Kosten für eine Subscription verursacht.

Hi Paresy,

wie kodiere ich den Text um?

Gerade mal probiert mit „Küche“ statt „Kueche“ (Shadowing):

Installation stoppt mit Fehlermeldung:

18:41:10 | 00000 | CUSTOM  | PHP                  | Error: Warning: Ident may contain only letters and numbers
   Error in Script /var/lib/symcon/scripts/IPSLibrary/install/IPSInstaller/IPSInstaller.inc.php on Line 41
  134 in IPSLibrary/app/core/IPSLogger/IPSLogger.inc.php (call IPSLogger_Out)
   37 in IPSLibrary/app/core/IPSLogger/IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
   41 in IPSLibrary/install/IPSInstaller/IPSInstaller.inc.php (call IPS_SetIdent)
  689 in IPSLibrary/install/InstallationScripts/IPSShadowing_Installation.ips.php (call CreateCategory)
  673 in IPSLibrary/install/IPSModuleManager/IPSModuleManager.class.php (call include)
   74 in webfront/user/IPSModuleManagerGUI/IPSModuleManagerGUI_Receiver.php (call InstallModule)

Der zugehörige Skriptteil (aus IPSInstaller.inc.php)

	 */
	function CreateCategory ($Name, $ParentId, $Position, $Icon=null) {
		$CategoryId = @IPS_GetObjectIDByIdent(Get_IdentByName($Name), $ParentId);
		if ($CategoryId === false) $CategoryId = @IPS_GetCategoryIDByName($Name, $ParentId);
		if ($CategoryId === false) {
			$CategoryId = IPS_CreateCategory();
			IPS_SetParent($CategoryId, $ParentId);
			IPS_SetName($CategoryId, $Name);
			IPS_SetIdent($CategoryId, Get_IdentByName($Name));                 //  <-- Zeile 41 !!
			if ($Position!==false) {
				IPS_SetPosition($CategoryId, $Position);
			}
			if ($Icon!==false) {
				IPS_SetIcon($CategoryId, $Icon);
			}
			Debug ('Created Category '.$Name.'='.$CategoryId."");
		}
		UpdateObjectData($CategoryId, $Position, $Icon);
		return $CategoryId;
	}

Wenn ich wieder „Kueche“ im Config-File eintrage läuft die Installation problemlos durch.

Gruß
Bruno