Einzelnen Beitrag anzeigen
  #11 (permalink)  
Alt 22-08-2011, 15:25
Benutzerbild von fireweasel fireweasel
 Registrierter Benutzer
Links : Onlinestatus : fireweasel ist offline
Registriert seit: Sep 2008
Ort: At home
Beiträge: 851
fireweasel wird schon bald berühmt werdenfireweasel wird schon bald berühmt werden
fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken
Standard

Zitat:
Zitat von sallow2001 Beitrag anzeigen
Hallo.

Ich lese mit readdir() den Inhalt eines Verzeichnisses (Windows) ein, um einige Dateien und Verzeichnisse zu bearbeiten.

Alles klappt wunderbar, bis auf einen bestimmten "Verzeichnis-Typ", der sich aufgrund eines Umlauts nicht fehlerfrei einlesen lässt.

Zum Test habe ich selber einige Verzeichnisse mit Umlauten erstellt, die wiederum einwandfrei erkannt und dargestellt werden.

Aber diese bestimmten Verzeichnisse müssen wohl irgendwie über Linux kommen oder sonstwas. Jedenfalls erhalte ich anstelle des Namens "[UNVOLLSTÄNDIG 48F von 49F]" den fehlerhaften Namen "[UNVOLLST-NDIG 48F von 49F]" ...
Wie soll man "... müssen wohl irgendwie über Linux kommen ..." verstehen? Dein Script läuft unter Windows. Irgendwie fehlen hier wichtige Informationen. Rück sie raus, sonst kann dir keiner helfen.

Wie sieht dein Quelltext aus?

Zitat:
Hat jemand eine Idee, woran es liegt bzw. wie ich den Verzeichnisnamen richtig darstellen kann, um bspw. mit "cd [verzeichnis]" in das Verzeichnis wechseln zu können?
Unter PHP wechselt man mit chdir() das Arbeitsverzeichnis.

Zitat:
Falls es jemand ausprobieren möchte: Ich habe die Verzeichnisse in ein Archiv gepackt und hochgeladen: http://www.namelesshost.com/testverzeichnisse.rar ...
Entpackt und eingelesen. Keine Probleme gefunden.

PHP-Code:
$url 'x:/_test/verzeichnisse/Verzeichnis1/';
//$url = 'x:/_test/verzeichnisse/Verzeichnis2/';

$dir opendir($url); // oeffnen
chdir($url); // wechseln
while (is_string($entry readdir($dir))) { // einlesen
    // kurzen und gesamten Pfad ausgeben
    
error::writefln('$entry: %s :: %s'$entryrealpath($entry));
}
closedir($dir); // zu-machen 
Was das Darstellen der Umlaute betrifft: PHP kann unter Windows nur die "ANSI"-Funktionen benutzen. Unicode können die PHP-Helden bis heute nicht. Es werden also die Zeichen, die außerhalb des ASCII-Bereichs liegen, in der jeweils eingestellten Codepage angezeigt. Zeichen aus anderen Codepages werden durch ein Ersatzzeichen ("?") überschrieben, oder der entsprechende Verzeichniseintrag wird gar nicht erst gefunden (auch nicht über den Short-Path-Name-Hack).

Wenn dein Windows die "ANSI-Codepage" (Win-1252) benutzt, kannst du Pfade oder Verzeichniseinträge mit utf8_encode() ausgabetauglich umwandeln.

Geändert von fireweasel (22-08-2011 um 15:33 Uhr)
Mit Zitat antworten