Thread [Tk] File auswählen unicode (31 answers)
Opened by welle at 2013-11-01 20:07

GUIfreund
 2013-11-06 13:48
#171859 #171859
User since
2011-08-08
559 articles
BenutzerIn
[default_avatar]
2013-11-05T19:27:13 Raubtier
Ich habe mal eben in der Doku nachgeschaut. Da steht:

Quote
CAVEATS
Perl does not have a concept of encoded filesystems yet. This means that operations on filenames like "opendir" and "open" still use byte semantics. Tk however uses character semantics internally, which means that you can get filenames with the UTF-8 flag set in functions like "chooseDirectory", "getOpenFile" and similar.

Meines Wissens ist Tk dem übrigen Perl immer noch ein gutes Stück voraus in der konsequenten Verwendung von Unicode. Slaven kann da sicherlich qualifizierter etwas zu sagen, hoffentlich liest er mit.

2013-11-05T19:27:13 Raubtier
Quote
It's the user's responsibility to determine the encoding of the underlying filesystem and convert the result into bytes, e.g.

Code (perl): (dl )
1
2
3
4
5
           use Encode;
           ...
           my $dir = $mw->chooseDirectory;
           $dir = encode("windows-1252", $dir);
           opendir DIR, $dir or die $!;
Es ist also normal, dass man konvertieren muss.

Interpretierst du das so, dass man für Windows anders kodieren muss als für Linux? Für NTFS anders als für FAT, für ext3 anders als für ext2? Das kann ich nicht glauben. Mein XP-Programm lief jedenfalls auch auf Linux. Zugegeben, damals hatte ich das Problem mit den Umlauten noch nicht bemerkt und daher kein encode eingebaut.
2013-11-05T19:27:13 Raubtier
Nach deiner letzten Nachricht bin ich jetzt aber etwas ratlos, ob du das Problem noch hast oder ob alles geht.

Beziehst du dich auf msg #171781 ? Falls ja, verstehe ich deine Frage nicht. In dieser Antwort habe ich gezeigt, dass nicht nur (wie schon in der Antwort davor) die Strings identisch sind, sondern auch das utf8-Flag. Und dass trotzdem das eine Programm fehlschlägt, während das andere die Datei öffnen kann.
Gruß
GUIfreund

View full thread [Tk] File auswählen unicode