Tone: Problem beim Umwandeln von Umlauten

Hallo alle zusammen!
Ich habe ein Problem mit PCLZIP (2.5). Und zwar will ich, dass beim Extrahieren der Dateien alle Leerzeichen und Umlaute ersetzt werden.

Habe dazu auch schon in den Zeilen 3741 und etwas darunter diesen Code eingefügt:

Mod by Tone

/*$file = fopen("c:\info.txt","w+");
fwrite($file,htmlentities($p_entry['filename'],null,"ISO-8859-15"));
fclose($file);*/

$asSuchmuster = array("Ž","„","™","”","š","�","á"," ");
$asErsetzungen = array("Ae","ae","Oe","oe","Ue","ue","ss","_");

$p_entry['filename'] = str_replace($asSuchmuster,$asErsetzungen,$p_entry['filename']);
#######################

Ich habe zum Testen eine Datei (Name: "Üvän RöbroÖf - Äalinka Mülinßa.mp3", Experten erkennen, dass sich hinter dieser Datei ein bekanntes Lied von Ivan Rebroff versteckt :D) gezippt und mit PCLZIP extrahiert.

PHP ersetzt mir alle Umlaute zuverlässig, bis auf das kleine ü. Dies kann nicht ersetzt werden, weil ich glaube, dass dieses leere Quadrat im str_replace nicht erkannt wird

Ausgabe des Dateinamens: "Uevaen_RoebroOef_-_Aealinka_M�linssa.mp3"
Ausgabe des htmlentities: "šv„n R”bro™f - Žalinka M�lináa.mp3";

Weiß jemand des Rätsels Lösung?? Wäre sehr dankbar dafür, quäle mich schon lange damit herum.
Vielleicht gibt es ja irgendetwas, um das Quadrat zu ersetzen.

Liebe Grüße,
Tone

  1. Hallo,

    mal vornweg angemerkt wird durch Umwandlung mit

    $asSuchmuster = array("Ž","„","™","”","š","�","á"," ");
    $asErsetzungen = array("Ae","ae","Oe","oe","Ue","ue","ss","_");
    $p_entry['filename'] = str_replace($asSuchmuster,$asErsetzungen,$p_entry['filename']);

    niemals aus

    Üvän RöbroÖf - Äalinka Mülinßa.mp3

    als Resultat

    Uevaen_RoebroOef_-_Aealinka_M�linssa.mp3

    Daher ist Dir ohne genaue Scriptangaben gar nicht zu helfen.

    Wenn als Bedingung nur die Umwandlung (bei Verlust der Lesbarkeit) wichtig ist, dann nutze base64_encode() und base64_decode(). Anderfalls solltest Du Deine Bedingung, was wie umgewandelt werden soll, präzisieren.

    Gruß aus Berlin!
    eddi

    1. Hallo Eddi!

      Doch, diese Ersetzung stimmt bis auf das kleine ü.

      Ich habe den Dateinamen ja in der Textdatei ausgeben lassen. Dort ist er mit diesen ganzen Sonderzeichen drinnen.

      -->siehe eintrag vorher (ausgabe htmlentities)

      Das Skript ist hier öffentlich zugänglich: http://www.phpconcept.net/download.php?file=pclzip-2-5.zip

      Ich glaube allerdings, dass das eventuell dran liegt, dass innerhalb des Zip-skripts die strings binär behandelt werden.
      hmm..

      lg tone

      1. Hallo Eddi!

        Sorry für den Doppelpost, aber ich denke, ich habe die Fehlerquelle gefunden.

        Das Problem liegt in der Zeile 4131, wo der Dateiname ausgelesen wird mittels fread. Dort werden diese Zeichen nicht erkannt.

        wie kann ich das beheben?

        lg tone

        1. Hallo,

          Das Problem liegt in der Zeile 4131, wo der Dateiname ausgelesen wird mittels fread. Dort werden diese Zeichen nicht erkannt.

          jetzt habe ich es verstanden und gebe Dir Recht, daß sich die Umformung tatsächlich so vollzieht. Also; Dein Problem liegt nicht zwingend in der Zeile 4131, sondern im anfänglich gepostetem Code. Du ersetzt "ü"(0xFC) nicht ;)

            
          $asSuchmuster  = array("Ž","„","™","”","š","�","á"," ","ü");  
          //------------------------------------------------------^  
          $asErsetzungen = array("Ae","ae","Oe","oe","Ue","ue","ss","_","ue");  
          //-------------------------------------------------------------^  
          
          

          Gruß aus Berlin!
          eddi