Schrift
[thread]11318[/thread]

Dateinamen mit Umlauten (Seite 2)

Leser: 5


<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Gast Gast
 2008-02-18 00:07
#106023 #106023
Ich habe das jetzt nochmal auf einem echtem Webserver(Linux) getestet. Genau das gleiche Problem. Mir scheint das sowas auch mit Perl nicht ohne weiteres zu lösen ist. Ich glaube die Idee muß ich wohl aufgeben. Wenn es nur Umlaute wären könnte man sicher noch was machen. Aber da sind auch Zeichen dabei die ganz sicher nicht mit ISO-8859-1 darstellbar sind. Wenn also nicht noch jemand eine richtig geniale Idee hat würde ich es sein lassen.
ptk
 2008-02-18 01:04
#106024 #106024
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Perl bis zur Version 5.10 hat keine vernünftige Unterstützung für Umlaute in Dateinamen. Du solltest Umlaute entweder vermeiden oder nur die bytes-Semantik erzwingen. Das gilt nur für Dateinamen, mit dem Inhalt kommt Perl glänzend zurecht.
Strat
 2008-02-18 09:51
#106027 #106027
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2008-02-17 21:48:09--
Code (perl): (dl )
1
2
3
open(HTML_FILE, '<',"./html/Holzfäller.htm") || die "Datei nicht gefunden";
use Fcntl ':flock';
flock(HTML_FILE, LOCK_SH);


Teste mal:
Code (perl): (dl )
1
2
3
4
5
6
7
8
use FindBin;
use File::Spec;
use Fcntl qw( O_RDONLY O_EXCL );
my $filename = File::Spec->catfile( $FindBin::Bin, '..', 'html', 'Holzfäller.htm' );

sysopen( my $HTML_FILE, $filename, O_RDONLY | O_EXCL )
    or die "Error: couldn't open file '$filename': $!\n";
... mach was mit $HTML_FILE


FindBin::Bin gibt den Pfad zum Script zurueck
File::Spec baut den vollen Pfad abhängig von deinem OS zusammen.

Wenn das Script in UTF8 gespeichert wird, sollte das so funktionieren.

ich bevorzuge für open + flock den Befehl [perldoc -f]sysopen[/perldoc] mit den entsprechenden flags.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Struppi
 2008-02-18 10:54
#106032 #106032
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Und wenn ich das richtig verstanden habe, heißt die Datei z.b. holzfäller und wird so vom Dateiexplorer angezeigt? Dann ist das kein utf-8 sondern normales ISO und du musst dann entsprechend die Datei so öffnen.

Was den Inhalt angeht, der vermutlich dann utf-9 ist, kann ich mangels Erfahrung nicht weiterhelfen.
Gast Gast
 2008-02-18 11:40
#106036 #106036
Ich verwende Perl 5.8.8, das sollte also nicht das Problem sein. Der Vorschlag von "Strat" bringt leider das gleiche Ergebniss wie mein Versuch.

Was ist normales ISO? Es sind zumindest teilweise Zeichen dabei die sich mit ISO-8859-1 nicht darstellen lassen, also komme ich da so auch nicht ran. Aber es sieht echt so aus als würde (warum auch immer) ISO-8859-1 erwartet.

Der Inhalt der Dateien ist utf-8.
Gast Gast
 2008-02-18 18:50
#106076 #106076
Und welchen Zeichensatz verwendet das Betriebssystem, auf dem die Datei liegt?
ptk
 2008-02-18 21:10
#106081 #106081
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Gast+2008-02-18 17:50:07--
Und welchen Zeichensatz verwendet das Betriebssystem, auf dem die Datei liegt?

Bei Unix gibt es nur Bytes. Die Zeichensatzsemantik kann von den Anwendungen, die darüber laufen, definiert werden, z.B. über die Locale des Benutzers. Das ist natürlich ein schlechter Ansatz, weil ein gültiger Dateiname mit einem iso-8859-1-Locale auf einmal ungültig wird, wenn man ein utf-8-Locale verwendet.

Bei Windows gibt es im Betriebssystem die Möglichkeit, "weite" Dateinamen zu definieren. Darauf kann man aber per Perl nicht darauf zugreifen (außer vielleicht mit Win32::*-Modulen).

Mehr Infos bekommt man per perldoc perltodo, Abschnitt "Unicode in Filenames".
sid burn
 2008-02-19 00:59
#106083 #106083
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Strat+2008-02-18 08:51:06--
ich bevorzuge für open + flock den Befehl [perldoc -f]sysopen[/perldoc] mit den entsprechenden flags.

Hmm, mit sysopen() kann man gleichzeitig eine Datei flock()en? Wo steht das?

Wenn du O_EXCL meinen solltest, das ist kein flock()...
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
betterworld
 2008-02-19 02:12
#106084 #106084
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Wobei man zum Auslesen von 1000 Bytes wahrscheinlich eh kein flock braucht ;)
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2008-02-17 20:21.