blablub: Datenbank + Dateinamen scannen und editieren

Hallo.

Ich habe eine Bildergalerie im Internet (Coppermine, das sagt bestimmt einigen von euch etwas). Die Bildergalerie arbeitet mit MySQL-Tabellen, in denen die Dateinamen der anzuzeigenden Dateien im Klartext steht.
Es befinden sich momentan 736 Dateien in der Galerie, in 3-facher Ausführung:

  • Originalgröße abc.jpg
  • Thumbnails thumb_abc.jpg
  • Anzeigegröße normal_abc.jpg
    (zur Erklärung: man lädt nur die abc.jpg - also die Originalgröße - hoch, das PHP-Skript dahinter verkleinert die Bilder und speichert die in den oben genannten Format ab).
    Somit hab ich also 736*3 = 2208 Bilder.

Das Problem sind die Umlaute. Durch mehrmaliges Hin-und-Her-Schieben zwischen verschiedenen Betriebssystemen und Dateisystemen, Backups anlegen, Backups einspielen etc., sind die Umlaute in den Dateinamen und in der Tabelle total verkorkst, so dass einige viele Bilder nicht angezeigt werden.

Ich möchte jetzt ein Skript/Programm haben, das

a) Das entsprechende Feld in der Tabelle nach den verkorksten Umlauten abscannt und diese Umlaute wieder "geradebiegt"

b) Die Dateinamen der Bilder abscannt, und dort ebenfalls die Umlaute wieder "geradebiegt"

Gerne auch zwei verschiedene Skripte/Programme.

Ich selbst könnte nur Punkt a) automatisieren, da ich PHP kann. Leider kann ich aber keine Shell-Skripte schreiben, sonst könnte ich auch Punkt b) selbst machen.

Kennt jemand ein/zwei/mehrere Programme, die diese Aufgabe übernehmen können?
Ich denke, eine Suche nach Suchmustern und eine Ersetzen-Funktion (wie das in Textverarbeitungsprogrammen häufig zu finden ist) müsste es auch für Dateien und Datenbanken geben, oder?

MfG
blablub

  1. echo $begrüßung;

    Das Problem sind die Umlaute. Durch mehrmaliges Hin-und-Her-Schieben zwischen verschiedenen Betriebssystemen und Dateisystemen, Backups anlegen, Backups einspielen etc., sind die Umlaute in den Dateinamen und in der Tabelle total verkorkst, so dass einige viele Bilder nicht angezeigt werden.

    "Total verkorkst" kann viele Zustände haben. Es gibt keine Möglichkeit für einen Compuer, absolut sicher zu erraten, was ein bestimmtes Byte oder eine Bytefolge zu bedeuten hat. Du als Mensch kannst aus dem Kontext erkennen, dass da ein ä, ö, ü hingehört.

    Wenn du genau definieren kannst, dass X in jedem Fall ein U darstellt, hast du eine Regel, die der Rechner für dich mehrfach anwenden kann. Ohne solche Regeln bleibt dir nur Handarbeit.

    echo "$verabschiedung $name";

    1. Hi

      Wenn du genau definieren kannst, dass X in jedem Fall ein U darstellt, hast du eine Regel, die der Rechner für dich mehrfach anwenden kann. Ohne solche Regeln bleibt dir nur Handarbeit.

      Die hab ich. "Müller" wird "Müller" heißen, so ähnlich verhält es sich auch bei öüß und so weiter.
      Aber wie kann ich das nun umsetzen, mit welchem Programm? Die Theorie war ja für mich schon von Anfang klar, das sagt auch mein letzter Satz in Original-Post (der in dem ich die Suchmuster erwähne) aus.

      MfG
      blablub

      1. echo $begrüßung;

        "Müller" wird "Müller" heißen, so ähnlich verhält es sich auch bei öüß und so weiter.

        Diese Information vereinfacht die ganze Geschichte doch erheblich. Das ist nämlich nicht "total verkorkst" sondern einfach nur UTF-8. Wenn du die Daten als UTF-8 interpretierst siehst du auch wieder die Umlaute. Willst du nicht vielleicht lieber gleich bei UTF-8 bleiben? Damit lassen sich deutlich mehr Zeichen kodieren als die 255 Stück von beispielsweise ISO-8859-1. Wenn nicht, dann kannst du dir ja mit PHP ein Script schreiben, das die Dateien eines Verzeichnisses liest, sie utf8_decode()iert und dann ein rename() anstellt.

        Wenn du dich zur Datenbank ebenfalls etwas genauer auslassen könntest, wären die Hinweise dazu sicher zielführender. Unter der Annahme, dass es sich um MySQL handelt kann dir vielleicht </archiv/2006/9/t136745/#m888404> helfen.

        echo "$verabschiedung $name";