Autor Thema: open File mit Umlauten im Filenamen  (Gelesen 646 mal)

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6140
open File mit Umlauten im Filenamen
« 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
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23125
Antw:open File mit Umlauten im Filenamen
« Antwort #1 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.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6140
Antw:open File mit Umlauten im Filenamen
« Antwort #2 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.
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1367
Antw:open File mit Umlauten im Filenamen
« Antwort #3 am: 27 Oktober 2020, 22:32:27 »
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.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6140
Antw:open File mit Umlauten im Filenamen
« Antwort #4 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
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23125
Antw:open File mit Umlauten im Filenamen
« Antwort #5 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.

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6140
Antw:open File mit Umlauten im Filenamen
« Antwort #6 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
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf Synology 415+
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SMAPortal, Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

 

decade-submarginal