finde Umlaut Dateien auf FritzBox NAS nicht

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    finde Umlaut Dateien auf FritzBox NAS nicht

    Hallo,
    habe ein sonderbares Problem:
    ich habe einen USB Stick an meine Fritzbox 7590 angeschlossen und benutze diesen als Netzwerklaufwerk.
    Jetzt habe ich durch Zufall festgestellt das es mit meinem (selbst geschriebenen VB-Net Programm) Probleme gibt,
    wenn die Dateinamen deutsche Umlaute enthalten.
    Da ich mit Wildcards arbeite kann ich 'FileSystem.FileExists' nicht benutzen.
    Ich habe das für mich wie folgt gelöst und teste mit folgender Funktion ob eine Datei existiert:


    Friend Function GibtEsDatei(Datei as string) as boolean
    Dim strDateien() As String

    strDateien=IO.Directory.GetFiles(Datei)
    If paths.Length > 0 Then
    Return True
    End If

    Return False
    end Function

    Diese wird aufgerufen z.B. mit
    GibtEsDatei(„Y:\xxxs\xxx\Datei.*“)
    Wenn ich diese Funktion aufrufe mit einem deutschen Umlaut (z.B. ü oder ä) im Dateinamen dann wird keine Datei gefunden. Dateien ohne Umlaute findet meine Programm ohne Probleme.
    Und das nur bei der Fritzbox. Ich habe noch eine Synology Diskstation im Netzwerk. Da funktioniert alles. Auf den Lokalen Festplatten auch.
    Irgendeine Idee?
    Schönen Abend noch
    Gregor
    @HalliHallo Das sieht aus, als ob nur ASCII-Zeichen erlaubt sind.
    Vermeide Verzeichnis- und Dateinamen mit Nicht-ASCII-Zeichen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Vielen Dank für die schnelle Antwort.
    Aber das Problem liegt nicht an den Umauten.
    Es passiert nur bei der VB Funktion "IO.Directory.GetFiles(Datei) "
    Open Office, MS-office und der Explorer zeigen die umlautdateien an und können Sie auch öffnen. Alles ganz normal.
    Nur die VB Funktion spinnt da. Man kann sich dann nicht wirklich auf diese Funktion verlassen oder?
    Was stimmt denn da nicht?
    Grüsse und schönes Osterfest.
    Gregor
    @HalliHallo Dateien auf dem PC können aber alle öffnen.
    Mit welchem Framework arbeitest Du?
    Probierma ein höheres.
    ===
    Ich hab dies gefunden:
    Copy Directory mit Pfaden in denen sich Umlaute befinden
    mycsharp.de/wbb2/thread.php?th…f2c8c583ca9c3d60d2294c80e
    forum.chip.de/discussion/17123…m-dateinamen-herausfinden
    ===
    Ich hatte mal ein Problem mit mp3-Dateien mit kyrillischen Zeichen drin, da wird ein "?" pro Zeichen angezeigt, und da verweigert das System das Kopieren, aber abspielen konnte ich sie.
    Das sieht mir doch sehr nach ASCII-Zwang aus.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo,
    habe mit dem Framework 4.5 gearbeitet. Habe es aber auch mit 4.6.1 ausprobiert. Macht keine Unterschied.
    habe noch ein paar Versuche gemacht und folgendes raus gefunden:
    Lege ich die Datei 'aaÜaa.txt' mit dem Windows Explorer oder einem beliebigen Programm an, dann wird sie mit
    • IO.Directory.GetFiles(Pfad, "*.txt"): GEFUNDEN
    • IO.Directory.GetFiles(Pfad, "*.*"): GEFUNDEN
    • IO.Directory.GetFiles(Pfad, "aaÜaa.txt"): GEFUNDEN
    • IO.Directory.GetFiles(Pfad, "aa*aa.txt"): GEFUNDEN
    • IO.Directory.GetFiles(Pfad, "aaÜaa.*"): NICHT GEFUNDEN

    Lege ich die Datei hingegen mit meinem VB Programm an (mit 'File.WriteAllText(path & "\" & "aaÜaa.txt", "")'dann wird diese Datei mit allen 5 Arten gefunden. Es sieht also tatsächlich so aus als wenn der Dateiname mit VB in einem anderen Zeichensatz gespeichert wird als mit dem Explorer.
    Aber das passiert nur auf dem FRITZ NAS.
    Auf meiner Festplatte, meinem Netzwerk NAS und auch wenn ich den USB Stick der Fritzbox direkt in den Computer stecke ist es völlig egal ob die Datei vom Explorer oder vom VB Programm geschrieben wird. Sie wird IMMER mit allen Methoden gefunden.
    Was unterscheidet das FRITZ NAS vom Rest der Welt?
    Und was kann ich unternehmen. Wie muss ich denn den Dateinamen vor dem Suchen kodieren?
    @RodFromGermany
    Leider haben mich deine Links auch nicht schlauer gemacht. Komme irgendwie nicht dahinter wie das geht. Wie kann ich denn den zu suchenden Dateinamen in einen anderen Zeichensatz codieren und vor allen Dingen: woher weiß ich denn in welchen Zeichensatz ich codieren muss.

    Schönen Ostermontag noch und viele Grüße
    Gregor

    HalliHallo schrieb:

    Open Office, MS-office und der Explorer zeigen die umlautdateien an und können Sie auch öffnen. Alles ganz normal.
    Nur die VB Funktion spinnt da. Man kann sich dann nicht wirklich auf diese Funktion verlassen oder?
    Ja, vielleicht hast du recht.
    Daraus folgt:

    RodFromGermany schrieb:

    Vermeide Verzeichnis- und Dateinamen mit Nicht-ASCII-Zeichen.




    Umlaute sind einfach gruselig - guckma folgendes Phänomen:

    VB.NET-Quellcode

    1. Public Sub Dbg(itm As Object)
    2. System.Diagnostics.Debug.WriteLine(itm.ToString)
    3. End Sub
    4. <STAThread>
    5. Public Sub Main()
    6. Dim names = {"HallüHallo", "HallvHallo"}
    7. Array.Sort(names)
    8. Dbg(String.Join(Microsoft.VisualBasic.ControlChars.Lf, names))
    9. Dbg(String.Compare(names(1), names(0)) > 0)
    10. Dbg(names(1) > names(0))
    11. End Sub
    12. 'Ausgabe:
    13. 'HallüHallo
    14. 'HallvHallo
    15. 'True
    16. 'False

    Zeile #7 sortiert die Strings.
    #8 gibt die sortierten Strings aus.
    #9 sagt, dass der zweite String grösser ist als der erste (was man im sortierten Array wohl für selbstverständlich hält).
    #10 sagt aber das Gegenteil des vorherigen! ;(

    Wie kann das sein?

    Ich muss zugeben, dass die Wirrnisse kulturabhängiger Sortierreihenfolgen bei Umlauten mit deim Datei-Suche-Problem vielleicht nix zu tun haben.
    Vielleicht aber doch.

    Wie dem auch sei: Vermeide Umlaute (äh: Nicht-ASCII-Zeichen) in Dateinamen.
    Oder weiter gefasst: Vermeide Umlaute in jeglichen Daten, die von irgendwelchen Algorithmen (auch Datei-Suchen) ausgewertet werden müssen.
    Es geschehen gelegentlich unvorhergesehene Dinge.

    Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Hallo,
    das ging ja schnell mit den Antworten.
    Ich muss auch Dateien einlesen,bzw. suchen, die nicht von mir sind. Da habe ich keinen Einfluss darauf ob Umlaute benutzt werden oder nicht.
    @'ErfinderDesRades
    Es ist ja nicht die Funktion und der Umlaut an sich der Probleme macht. Es geschieht ja nur auf dem Fritz NAS. Auf allen anderen Speichern wird ja korrekt gefunden.
    @Eierlein
    Zu AVM: Habe das Problem geschildert. Da kam die Antwort das sie das nicht nachvollziehen können. Bei Ihnen klappt alles. Angeblich. Ich bezweifle das es mit einem VB-Programm versucht wurde.
    Ich habe es aber inzwischen auf 2 verschiedenen FritzBoxen ausprobiert in 2 verschiedenen Netzwerken. Bei beiden das gleiche Problem.
    Na ja, ich gebs jetzt auf. Ich versuche die Dateinamen nur noch ohne Wildcards zu suchen. bzw. alle Dateien mit
    IO.Directory.GetFiles(Pfad, "*.*")
    einzulesen und das Ergebnis durchsuche ich dann selbst mit normalen Stringfunktionen.
    Viele Grüsse und vielen Dank.
    Gregor
    @HalliHallo Was muss ich auf / mit der Fritz!Box tun, damit ich Deinen Effekt nachvollziehen kann?
    Wenn es geht mit einer vollständigen Handlungsanweisung.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    HalliHallo schrieb:

    Es geschieht ja nur auf dem Fritz NAS. Auf allen anderen Speichern wird ja korrekt gefunden.
    Das sagtest du bereits.
    Kann es sein, dass auf deinem NAS eine iwie eine andere Kultur eingestellt ist als auf deim Rechner?
    Oder dass da nur ein Algo herumfährt, der die falsche Kultur annimmt?

    Aber ist nur Spekulation - von NASse versteh ich eiglich garnix.
    @HalliHallo Mein Fritz heißt 7490, das sollte es aber nicht machen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Guten Abend
    @RodFromGermany
    habe eine kleines Beispielprojekt geschrieben.
    Kannst du hier *Link wg. EXE-Datei entfernt* downloaden.
    Ist ein ZIP - File und es ist ein ReadMe dabei. Ich hoffe, ich habe alles gut erklärt :)
    Grüsse Gregor

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @HalliHallo Die Seite hat Corona. X(

    Nutze die Dateianhang-Fun ktionalität des Forums:
    Erweiterte Antwort => DAteianhänge => Hochladen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!