Sir Quicksand: unlink von Dateien mit Umlauten

Hallo Leute,

wie bekomme ich auf einem Linux Server mittels der unlink() Funktion Dateien mit Umlaute / Sonderzeichen gelöscht?
Pfad usw. sind korrekt und funktionieren bei "normalen" Namen.

unlink(utf8_encode(""_testö.txt"))
Irgendwie macht er aus "_testö.txt" = "_testö.txt"

Ich habe es auch mit diesem hier und ohne Konvertierung probiert: _test%F6.txt

Leider sagt der Server: No such file or directory in ....

Hochladen kann ich die Datei mit ö.

  1. Hello,

    in welcher Codierung ist Dein Script abgespeichert?

    Liebe Grüße aus Syburg

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. in welcher Codierung ist Dein Script abgespeichert?

      Habe "iso-8859-1 westeuropäisch" und "windows 1252 westeuropäisch" benutzt, löschen geht nicht. Habe UTF-8 probiert, dann ist schon meine ganze Ausgabe Käse und löschen geht weiterhin nicht.

  2. Hello,

    solange ich nicht den gesamtem Ablauf kenne, werde ich Dir vermutlich nicht helfen können.

    probier mal dieses kleine Scriptlein...

    <?php    ###  umlaute.php ###

    touch ('übeltäter.datei');

    $fh = fopen('übeltäter.datei','r+');
    fseek($fh, 0, SEEK_END);
    fwrite($fh, "Mein bunter Text\r\n");
    fclose($fh);

    if (isset($_GET['delete']))
    {
        if (unlink('übeltäter.datei'))
        {
            echo "Datei wurde gelöscht";
        }
    }
    else
    {
        readfile('übeltäter.datei');
    }

    ?>

    Das klappt bei mir einwandfrei.

    Liebe Grüße aus Syburg

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hi Du,

      es liegt am Server (vServer von 1blu, ca. 3 Jahre alt). Das Teil ist schlecht eingestellt, deshalb funzt das wohl nicht. Auf meinen anderen Webspaces funzt Dein Script mit den Umlauten.

      Sir Quicksand

      1. Hello,

        es liegt am Server (vServer von 1blu, ca. 3 Jahre alt). Das Teil ist schlecht eingestellt, deshalb funzt das wohl nicht. Auf meinen anderen Webspaces funzt Dein Script mit den Umlauten.

        Dann schau Dir mal mit http://web-sniffer.net/ oder einem anderen Tool die Header an, die der Server liefert. Ruf dazu mit dem Sniffer eins deiner Scripte auf. Aus der Antwort sollte erkennbar sein, in welcher Kodierung der Server die Antwort anbietet. In der gleichen würde Dein Browser dann antworten.

        Wenn da nun UTF-8 gesprochen wird, musst Du die Requestdaten für die Verwendung im Filesystem ggf. erst wieder mit utf8_decode() http://de.php.net/manual/de/function.utf8-decode.php behandeln.

        Dann sollte der zugriff auf die Files mit Umlaut-Namen aber funktionieren.

        Liebe Grüße aus Syburg

        Tom vom Berg

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Hello,

          Wenn da nun UTF-8 gesprochen wird, musst Du die Requestdaten für die Verwendung im Filesystem ggf. erst wieder mit utf8_decode() http://de.php.net/manual/de/function.utf8-decode.php behandeln.

          Dann sollte der zugriff auf die Files mit Umlaut-Namen aber funktionieren.

          Das bringt mich auf die Idee, in Formularen immer ein <hidden>-Element mit Prüfdaten unterzubringen, um erkennen zu können, od der Browser UTF-8 oder ISO8859-X spicht.

          Wie müssten die Prüfdaten denn am besten aussehen, um die Erkennung möglichst sicher (mit hoher Wahrscheinlichkeit) durchführen zu können? Was meint Ihr?

          Liebe Grüße aus Syburg

          Tom vom Berg

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. echo $begrüßung;

            Das bringt mich auf die Idee, in Formularen immer ein <hidden>-Element mit Prüfdaten unterzubringen, um erkennen zu können, od der Browser UTF-8 oder ISO8859-X spicht.

            Der Browser wird normalerweise die Kodierung der Seite verwenden, in der das Formular steht.

            Wie müssten die Prüfdaten denn am besten aussehen, um die Erkennung möglichst sicher (mit hoher Wahrscheinlichkeit) durchführen zu können? Was meint Ihr?

            Vor gar nicht allzu lager Zeit hatte mal jemand eine URL genannt, unter der das Verhalten der Browser mit und ohne accept-charset untersucht worden war. Mehr Stichwörter zur Recherche fallen mir nicht ein.

            Und bei MySQL hatte sich im Jahre 2004 auch schon mal jemand mit dem Thema beschäftigt: New in 4.1: Unicode and Other Funny Characters

            echo "$verabschiedung $name";

            1. Hello,

              Das bringt mich auf die Idee, in Formularen immer ein <hidden>-Element mit Prüfdaten unterzubringen, um erkennen zu können, od der Browser UTF-8 oder ISO8859-X spicht.

              Der Browser wird normalerweise die Kodierung der Seite verwenden, in der das Formular steht.

              Mit geht es da ja eher um die unnormalen Fälle :-)

              Die Linktipps werde ich mal verfolgen. Vielleicht kommt ja 'was dabei heraus.

              Liebe Grüße aus Syburg

              Tom vom Berg

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de