Case sensitivity

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Case sensitivity und Case insensitivity (engl. case = Fach, abgeleitet von den Fächern (type cases), in denen Drucker die verschiedenen Drucklettern aufbewahrten, (in)sensitivity = (un-)Abhängigkeit) bezeichnen in der elektronischen Datenverarbeitung zwei grundsätzlich unterschiedliche Verfahren zur Behandlung der Großschreibung bzw. Kleinschreibung ansonsten gleicher Zeichenfolgen hinsichtlich der Frage ihrer Gleichheit oder Ungleichheit im Umgang mit Textdaten. Man kann im Grundsatz der Case insensitivity eher das menschliche Textverständnis berücksichtigt sehen, im Grundsatz der Case sensitivity dagegen eher das maschinelle Datenverständnis.

Zur Anschauung dienen die Zeichenfolgen name, Name, NAME und naMe.

In diesen vier Zeichenfolgen sind vier Varianten ein und desselben Wortes zu erkennen. Für den Menschen unterscheiden sie sich nur nach Großschreibung und Kleinschreibung, ansonsten sind sie gleich. Dieser Deutung liegt eine kulturelle Konvention zugrunde, nämlich das Wissen um die Verwandtschaft zwischen großen und kleinen Buchstaben (Majuskeln und Minuskeln).

In Rechensystemen werden unterschiedliche Zeichen auf der maschinellen Ebene durch unterschiedliche Zahlen repräsentiert. In der Zeichenkodierung ASCII beispielsweise hat das große „A“ den Dezimalwert 65, das kleine „a“ den Dezimalwert 97. Eine beiden Zahlenwerten innewohnende Verwandtschaft zueinander gibt es auf maschineller Ebene nicht, da es auch keine maschinelle Konvention analog zur erwähnten kulturellen Konvention gibt. Die beiden Werte und damit die beiden Zeichen sind für die Maschine ungleich.

Allerdings sei erwähnt, dass ASCII – wie auch andere Zeichenkodierungen – zwecks maschinell möglichst effizienter Umwandlung von kleinen zu großen Zeichen diese im Zahlenraum dergestalt anordnen, dass hierzu nur ein einzelnes Bit umgesetzt werden muss.

Die Ungleichbehandlung von Zeichenfolgen, die dem Menschen als gleich gelten mögen, ist daher der natürliche oder besser gesagt: der native Umgang der Maschine mit Textdaten. Unterschiede in der Schreibung eines Wortes sieht die Maschine auch dann als Ungleichheit, wenn sie nur die Schreibung des Buchstabens betreffen. Hier liegt im Hinblick auf die Gleichheit von Zeichenfolgen case sensitivity vor.

Um auch Case insensitivity auf Rechensystemen als Grundsatz der Behandlung von Textdaten verfügbar zu machen, muss durch Einsatz programmiertechnischer Mittel eine Abstraktionsschicht über das native Datenverständnis der Maschine gelegt werden, die das oben angesprochene menschliche Textverständnis nachahmt. Diese Abstraktion blendet Unterschiede zwischen großen und kleinen Buchstaben aus. Aus Anwendersicht kann dieses Verhalten wünschenswert sein. Das bedeutet einen gewissen Mehraufwand an Rechenleistung bei der Verarbeitung von Textdaten, was aber bei der heutzutage verfügbaren Technik für die meisten Anwendungen unerheblich ist.

Ein bekanntes Beispiel für die unterschiedliche Behandlung von Textdaten sind die auf den Betriebssystemen UNIX und Microsoft Windows jeweils vorherrschenden Dateisysteme. Während die für UNIX typischen Dateisysteme case sensitive sind, wurde Windows über längere Zeit mit Dateisystemen ausgeliefert, die case insensitive sind. Zum Beispiel sind im Windows-Dateisystem FAT32 Name.txt und NAME.TXT gleich, in ext3 unter Linux verschieden. Das Dateisystem NTFS nimmt hierbei eine Sonderstellung ein. Dieses ist von der Struktur her "case sensitive", allerdings ist es unter Windows nicht möglich Dateien anzulegen, die sich ausschließlich in Groß-Kleinschreibung unterscheiden, da dies die Kompatibilität mit bestehenden Anwendungen einschränken könnte.[1]

Dieses unterschiedliche Verhalten kann zu Problemen bei gemischten Netzwerken führen, etwa wenn man versucht, zwei Dateien mit gleichem Dateinamen, aber unterschiedlicher Schreibung von einem UNIX-System auf ein Windows-System zu kopieren.

Ob Case sensitivity vorliegt, ist in der Informatik bei der Benennung generell von Bedeutung. So sind die Symbole mancher Programmiersprachen (C, Perl) abhängig von Groß- und Kleinschreibung, die anderer hingegen (Pascal, Visual Basic) nicht. Wieder andere Sprachen (PHP) vermischen beide Prinzipien.

Weblinks[Bearbeiten]

Englisch:

Einzelnachweise[Bearbeiten]

  1. Filenames are Case Sensitive on NTFS Volumes. Support.microsoft.com. 1. November 2006. Abgerufen am 24. Oktober 2013.