none
Dateinamen-Konvertierung RRS feed

  • Frage

  • Ich habe eine HiDrive-Ordnerstruktur unter Windows (NTFS), bei der sich etliche Dateien mit em HiDrive-Client nicht synchronisieren lassen ("Ungültiger Datei- oder Verzeichnisname").

    Meine Analyse ergab, dass diese Dateien offensichtlich von einem Mac aus bearbeitet wurden und daher (z.B. bei Umlauten im Verzeichnis-/Dateinamen) nicht mit NTFS kompatibel sind (UTF8-NFC (»Composed«) kontra UTF8-NFD (»Deomposed«)?).

    Liege ich soweit richtig? Gibt es ein Tool / einen Befehl, das eine UTF8-Konvertierung der Verzeichnis-/Dateinamen vornimmt?

    Vielen Dank
    Michael Rocholl

    Montag, 17. Februar 2020 06:14

Antworten

  • Nachtrag:

    https://docs.microsoft.com/de-de/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpath

    On newer file systems, such as NTFS, exFAT, UDFS, and FAT32, Windows stores the long file names on disk in Unicode, which means that the original long file name is always preserved. This is true even if a long file name contains extended characters, regardless of the code page that is active during a disk read or write operation.

    • Als Antwort markiert sg08234Rc Dienstag, 25. Februar 2020 12:33
    Montag, 17. Februar 2020 11:18

Alle Antworten

  • Da würde ich die Frage im MAC-Forum stellen oder eben die Anweisung rausgeben, Sonderzeichen in Namen zu unterlassen.

    Da Windwos ja wohl auf die Dateien nicht zugreifen kann, kann WIndows ja auch den Namen nicht ändern.

    Montag, 17. Februar 2020 08:32
  • Danke!

    Da habe ich nicht genau genug formuliert: Die Datei- oder Verzeichnisname werden unter Windows korrekt dargestellt (z.B. ist ein Space ein Space), aber z.B. der HiDrive-Client verweigert den Sync mit "Ungültiger Datei- oder Verzeichnisname".

    Wenn man sich aber die Hex-Codierung des Datei- oder Verzeichnisnamens ansieht, stellt man fest dass der Space als Dopplebyte codiert ist (Hex: A= 5C).

    Künftig werde ich Deiner Anregung natürlich folgen, Sonderzeichen in Namen zu unterlassen. Aber: Wier werde ich das Problem bei ca. 200 vorhandenen Dateien mit Problemen im Datei- oder Verzeichnisnamen "elegant" los?

    Vielen Dank
    Michael

    Montag, 17. Februar 2020 08:55
  • Dann ist es am einfachsten mit einem Powershell-Script:
    In einer Scheife die Dateiname lesen, Sonderzeichen umsetzen (ä = ae, ö = oe, usw.) und die Datei umbenennen.

    Ob die Dateinamen als Doppelbyte angezeigt werden oder nicht, liegt an dem verwendeten Zugriff.
    Strings sind natürlich immer in UCS2 (Doppelbyte-Unicode), deshalb wird dier das auch so angezeigt.

    Greifst du native mit z.B. C-Befehlen als CHAR[n]-Felder zu, erhältst du wieder Singelbyte im Code deiner Anwendung (LCID), meist ANSI.

    Montag, 17. Februar 2020 10:46
  • Nachtrag:

    https://docs.microsoft.com/de-de/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpath

    On newer file systems, such as NTFS, exFAT, UDFS, and FAT32, Windows stores the long file names on disk in Unicode, which means that the original long file name is always preserved. This is true even if a long file name contains extended characters, regardless of the code page that is active during a disk read or write operation.

    • Als Antwort markiert sg08234Rc Dienstag, 25. Februar 2020 12:33
    Montag, 17. Februar 2020 11:18