FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: DS_Starter am 27 Oktober 2020, 19:35:06

Titel: open File mit Umlauten im Filenamen
Beitrag von: DS_Starter am 27 Oktober 2020, 19:35:06
Ich habe wahrscheinlich ein simpel zu lösendes Perl-Problem, komme aber einfach nicht voran.

Um ein File zum Lesen zu öffnen verwende ich wie üblich:


open $fh, '<', $file or do {...}


Das klappt ... aber nicht wenn im Filenamen $file ein Umlaut vorhanden ist, also z.B. Angebot_Zäune.pdf, Straßennamen.txt usw.

Wie muß in einem solchen Fall verfahren werden ?
Google hat mich bisher leider nicht erleuchtet.

VG
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: rudolfkoenig am 27 Oktober 2020, 21:38:04
Bei Problemen ist es oft hilfreich eine Fehlermeldung zu haben, "klappt nicht" qualifiziert sich nicht als solches.

Ich tippe auf 2/ENOENT/No such file or directory, was wiederum an der unterschiedlichen Kodierung der Umlaute (latin1 vs. utf8) liegen kann.
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: DS_Starter am 27 Oktober 2020, 21:47:04
Ja, sorry, hätte ich vervollständigen müssen.
Aber Rudi, ja, du hast recht. Es kommt der Fehler: No such file or directory.

Und mit einem möglichen latin1 vs. utf8 Problem liegst du sicherlich auch nicht verkehrt.
Nur habe ich bisher nichts hilfreiches gefunden um open anders zu kodieren. Der Zusatz '<:utf8' etc. bezieht sich meines Wissens auf den Inhalt des Files. Hatte ich auch ausprobiert und hatte nicht geholfen.
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: Christoph Morrison am 27 Oktober 2020, 22:32:27
Zitat von: DS_Starter am 27 Oktober 2020, 21:47:04
Und mit einem möglichen latin1 vs. utf8 Problem liegst du sicherlich auch nicht verkehrt.
Nur habe ich bisher nichts hilfreiches gefunden um open anders zu kodieren. Der Zusatz '<:utf8' etc. bezieht sich meines Wissens auf den Inhalt des Files. Hatte ich auch ausprobiert und hatte nicht geholfen.

Du bist leider nicht alleine (https://github.com/perl/perl5/issues/15883). Ein Blick auf's Datum der Issue verrät auch, wie sehr daran gearbeitet wird.
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: DS_Starter am 28 Oktober 2020, 08:26:03
Danke für den Hinweis Christoph. Dann muß ich den Term "simpel" in meiner gestellten Frage wohl streichen.  :'(

Grüße,
Heiko
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: rudolfkoenig am 28 Oktober 2020, 15:49:50
Na so aufwendig duerfte es auch nicht sein, folgendes Programm oeffnet die Datei mit dem Namen Küche in latin1 Kodierung:
use Encode qw(encode);
use utf8;
die("$!\n") if(!open(my $fh, "<", encode("iso_8859_1", "Küche")));

Zu Beachten:
- dieses Programm muss mit utf-8 abgespeichert werden
- das (nicht gezeigte) Programm, was die Datei Küche anlegt, muss latin1 verwenden.
Titel: Antw:open File mit Umlauten im Filenamen
Beitrag von: DS_Starter am 28 Oktober 2020, 16:30:00
Danke Rudi, das funktioniert.  :)
Mein Modul nutzt utf8, insofern kein Problem.

Kleiner Wermutstropfen:

Zitat
das (nicht gezeigte) Programm, was die Datei Küche anlegt, muss latin1 verwenden
Die auszuwertenden (zu übertragenden Files mit der Synology File Station API) können von irgendwelchen Programmen erstellt sein, die ich nicht bewerten kann.

Aber die ersten Tests haben erstmal alle super funktioniert. Da habe ich einen Ansatz und kann weitermachen.
Vielen Dank !  8)

Grüße,
Heiko