Thread if(-e $file) und Umlaute..
(22 answers)
Opened by GoodFella at 2007-01-16 17:12
[quote=ptk,16.01.2007, 20:34]Es ist sehr wahrscheinlich, dass getOpenFile Probleme mit Umlauten hat. Ich habe schon ein ähnliches getOpenFile-Problem beheben müssen.
Wahrscheinlich funktioniert es, wenn du den Dateinamen wieder im System-Encoding zurückwandelst. Also: Code: (dl
)
Encode::encode("iso-8859-1", $dateiname) Hab jetzt ein paar Tests gemacht: Zum einen lässt sich das Problem bei mir reproduzieren: Perl v5.8.8 build 819 Tk 804.027-r6 Zum anderen habe ich encoding ausprobiert. War natürlich neugierig, welchen Unterschied der anders kodierte String aufweist: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 @types =( ['All files', '*'], ['CSV files', '.csv'], ['Excel files', '.xls'] ); $value = $parent->getOpenFile( -filetypes => \@types, -initialdir => '.' ); print ord($_).':' for(split(//,$value)); print "\n"; $value = encode("iso-8859-1", $value); print ord($_).':' for(split(//,$value)); print "\n"; Nun, es gibt keinen und der Fehler lässt sich so auch nicht beheben... vielleicht liegt es an der Art des encodings? Woher weiss ich, welches encoding -e file erwartet und welches mir getOpenFile zurückgibt? Achja, Datei kurz öffnen und schliessen geht fehlerlos, prüft zwar nicht nur auf Existenz, aber wäre ein Workaround. Fragt sich nur, warum -e file anders funktioniert als open. Die Testdatei heisst übrigens "hälölüßer_test.xls" ..Das alles deutet übrigens daraufhin, dass nur -e file Probleme mit Umlauten hat, getOpenFile jedoch korrekt arbeitet (bis auf dass es in Windows-Pfadangaben Slashes statt Backslashes zurückgibt und Button-1-Events an das darunterliegende Widget weiterleitet) [edit] Code: (dl
)
1 C:\Xitami\cgi-bin\mailsmore\PostEnhance>perl -e "if (-e 'hälölüßer_test.xls') { ..Bei Benutzung von perl -e in cmd funktioniert es. Merkwürdig.\n\n <!--EDIT|GoodFella|1169008502--> |