Thread Gemeinsames ungültiges Zeichen für Verzeichnisnamen (17 answers)
Opened by bianca at 2011-12-10 20:30

topeg
 2011-12-10 23:08
#154772 #154772
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Um dir klar zu machen was ein geschütztes Zeichen sein kann, musst du wissen wie ein Betriebssystem Dateinamen behandelt und warum.

Als die ersten "Compact Computer" heraus kamen ("nur noch" wenige Tonnen schwere Schaltschränke), war Speicherplatz und RAM teuer. Also wurden Dateisysteme entwickelt, die wenig Speicher belegen und wenig Speicher zur Laufzeit brauchen.
So wird beim FAT12 Dateisystem 14Byte für jeden Datei Header verbraucht. Bei Modernen Dateisysteme wie Ext4 verbrauchen die Dateiheader Minimal 512Byte können aber auch mehrere MB groß sein.
Ähnliche Beschränkungen wurden den Betriebssystem auferlegt um das Parsen von Kommandozeilen zu vereinfachen. So verbietet das CPM bei der Eingabe alle Zeichen die kleiner sind als ASCII-43 sowie \ und alles was größer als ASCII-122 ist, obwohl das auf Dateisystem Ebene keinerlei Probleme machen würde (dargestellt werden können alle Zeichen). Das DOS macht etwas andere weniger strikte Einschränkungen (es kam ein paar Jahre später). Andere Systeme wie UNIX mussten auf Großrechnern nicht so sehr darauf achten und konnten sich komplexere Parser und Dateisysteme leisten. Schon die ersten Varianten hatten geringe Einschränkungen was Dateilängen und zugelassenen Zeichen betraf. So hatten die ersten Dateisysteme noch Begrenzungen was die Länge von Dateinamen betraf. Das UnixFS hatte noch eine Beschränkung auf 512 Byte das ext1 eine auf 1024 Byte usw. Als die Systeme immer Leistungsstärker wurden und Speicher immer günstiger fielen auch die letzten Beschränkungen. Moderne Dateisystem und Betriebssysteme haben fast keine Einschränkungen was die Dateinamen Längen oder erlaubten Zeichen betrifft. Mitunter sind die Beschränkungen nur noch historisch bedingt um Abwärtskompatibilitäten zu erhalten.

Wenn du nun Platformübergreifend Programmieren willst und alle möglichen Konventionen beachten musst, so musst du für die Dateinamen ein Subset wählen, das alle unterstützen. Im extremsten Fall sind das Alphanumerische Groß geschriebene Zeichen im Format "8.3". Wenn dich DOS und ähnliche Systeme nicht interessieren, so kannst alle Zeichen bis auf ()[]{}*./?\|: nutzen. Die Namen sollten nicht länger als 1024 Byte sein.

Auf Systemen die den POSIX1-Standard unterstützen gibt es keinerlei Beschränkungen was die erlaubten Zeichen betrifft. Nur die Dateinamenlänge sollte 4096 Byte nicht übersteigen.

View full thread Gemeinsames ungültiges Zeichen für Verzeichnisnamen