PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Umlaute bei readdir



Cosmo
08-10-2003, 15:30
Hallo!
Also das Umlaute ein ständiges Thema sind weiß ich auch, aber trotz einiger studien der gängigen Hilfe, habe ich mein Problem coch nicht in den Griff bekommen:

Ich lese mittels mehrfach verschachtelter Schleifen durch readdir meine Verzeichnisstruktur aus und generiere aus den Datei/Verzeichnisnamen ein
Menü
Das Problem ist nur das bei Verzeichnissnamen mit Umlauten diese nicht dargestellt werden da erscheinen immer nur zwei kommas ,,

Hat jemand ne idee, htmlspecialchars o.ä. funktioniert natürlich nicht da kain String eingelesen wird sondern schon vorhanden ist.


PS.: Ich weiß das Umlaute weder was in Datei- oder Verzeichnisnamen zu suchen haben, aber ich bin nicht Gott :D

sixfriends
09-10-2003, 01:44
Könnte es sein, dass es nicht zwei Kommata sind, sondern ein Zeichen, das aussieht, wie zwei Kommata, die in der Luft schweben?

Wenn ja, dann ist es wohl so, dass readdir die Dateinamen richtig einliest, dein Prog sie aber falsch ausgibt. Klingt komisch, ist aber so.

Ich geh jetzt daher mal davon aus, dass du unter Windows "arbeitest".
Ich bin kein Experte, aber so weit ich weiß, werden Pfad- und Dateinamen als DOS Characters gespeichert und dein Programm gibt dann vermutlich die Windows Werte des Zeichens aus.
Heißt zu deutsch (jedenfalls auf der Codepage, die ich hier vor mir liegen hab, 850):
chr(148) ist hier aufgelistet unter DOS als ö und unter Win als diese zwei hochgestellten Kommata.

Was du dagegen machen kannst? Ich bin auch nicht Gott! ;)

sixfriends

Cosmo
09-10-2003, 08:05
Ja genau das war der richtige Tip, ich habe mal n bischen an dem Chrarakter encoding des Browsers rumgespielt und siehe da wenn IBM-850 eingestellt ist sind die Umlaute wieder da :rolleyes:
Zumindest habe ich ja mal einen Ansatz zum weiterdenken :)

PS. Ich habe mir die NT Kiste nicht freiwillig ausgesucht ...zuhause ist es eben doch am schönsten:D

Cosmo
09-10-2003, 09:46
So ich habe mal in meiner mir eigenen robusten art und weise das Problem gelöst, danke auch nochmal an sixfriends;

Ich suche nach den entsprechenden chr() werten und ersetze die in der Ausgabe mit den Umlauten:


$verz=opendir ('.');
while ($file = readdir ($verz))
{
$file = strtr($file, chr(148), "ö");
$file = strtr($file, chr(129), "ü");
$file = strtr($file, chr(132), "ä");
$file = strtr($file, chr(196), "Ä");
$file = strtr($file, chr(220), "Ü");
$file = strtr($file, chr(214), "Ö");
echo $file;
}


Vielleicht geht das mit regulären Ausdrücken besser ?:confused:
Wenn die numerischen Werte wenigstens zusammenhängend in Reihenfolge stehen würden,
wäre ja auch ne Schleife zum ersetzen ganz sinnvoll..................:rolleyes:
noch Ideen?:)

sixfriends
09-10-2003, 14:13
Original geschrieben von Cosmo
PS. Ich habe mir die NT Kiste nicht freiwillig ausgesucht ...zuhause ist es eben doch am schönsten:D
Na ja, immer noch besser als Windows Xtra Peinlich :eek:

Als Ersetzung durch regulären Ausdruck unter php würde das ganze vermutlich so aussehen, wenn dein eingelesenes Zeug im String $string steht:


$string = preg_replace('/'.chr(148).'/', 'ö', $string);

Aber ob das unbedingt besser oder einfacher ist, weiß ich auch nicht.

btw: Das ß hast du vergessen