open File mit Umlauten im Filenamen

Begonnen von DS_Starter, 27 Oktober 2020, 19:35:06

Vorheriges Thema - Nächstes Thema

DS_Starter

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
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

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.

DS_Starter

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.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Christoph Morrison

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. Ein Blick auf's Datum der Issue verrät auch, wie sehr daran gearbeitet wird.

DS_Starter

Danke für den Hinweis Christoph. Dann muß ich den Term "simpel" in meiner gestellten Frage wohl streichen.  :'(

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

rudolfkoenig

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.

DS_Starter

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
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter