Case sensitivity

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

Der englische Ausdruck Case-sensitivity bezeichnet in der elektronischen Datenverarbeitung allgemein die Art und Weise, wie eine Rechenmaschine oder formale Sprache (insbesondere Programmiersprachen) die Unterscheidung von Groß- und Kleinschreibung handhaben. Das Wort leitet sich von „case“ für „Fach“ ab, abgeleitet von den Fächern (englisch type cases) in denen Drucker die verschiedenen Drucklettern aufbewahrten, und „(in)sensitivity“ für „(Un-)Abhängigkeit.“

Konkret bedeutet case-sensitive (zu Deutsch, wenn durch Kontext gegeben, sensitiv), dass Versalien und Minuskeln als unterschiedlich angesehen werden. Das Gegenteil ist case-insensitive (im Kontext nicht-sensitiv).

Sollen Daten nicht-sensitiv bearbeitet werden, so bedeutet das einen höheren Programmier- und Rechenaufwand, da beispielsweise die Buchstaben a und A für die Maschine das gleiche Zeichen bedeuten sollen. Dies wird allgemein als Normalisierung bezeichnet. Da sich der ASCII-Wert für das A als Großbuchstabe, mit dem Binärwert 01000001, vom a als Kleinbuchstaben, mit dem Binärwert 01100001, unterscheidet, sind für eine Normalisierung zusätzliche Abfragen, Konvertierungen oder Unifikationen nötig.

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

In diesen vier Zeichenfolgen sind vier Varianten 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.

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 ohne zusätzliche Verarbeitung ungleich. Für Programmiersprachen gibt es verschiedene gängige Namenskonventionen.

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 so anordnen, dass hierzu nur ein einzelnes Bit umgesetzt werden muss.

Um also auch eine nicht-sensitive Behandlung von Textdaten auf Rechensystemen 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-sensitiv sind, wurde Windows über längere Zeit mit Dateisystemen ausgeliefert, die nicht case-sensitiv sind. Zum Beispiel sind im Windows-Dateisystem FAT32 Name.txt und NAME.TXT gleich, in ext3 unter Linux unterschiedlich. Das Windows-Dateisystem NTFS ist an sich case sensitive. Windows erlaubt es allerdings nicht, Dateien anzulegen, die sich nur in der Groß- und Kleinschreibung unterscheiden, und der Zugriff auf Dateien ist ebenfalls case insensitive. Bei der Anzeige der Dateien wird die Groß- und Kleinschreibung jedoch wiedergegeben.[1]

Das üblicherweise in macOS verwendete Dateisystem HFS Plus und das für macOS High Sierra geplante APFS sind standardmäßig case insensitive, können aber umgeschaltet werden, während sie in iOS case sensitive verwendet werden.

Dieses unterschiedliche Verhalten kann zu Problemen beim Datenaustausch auf Dateiebene führen. Dazu gehören sowohl physische Datenträger wie USB-Sticks als auch gemischte Netzwerke, etwa wenn man versucht, zwei Dateien mit gleichem Dateinamen, aber unterschiedlicher Schreibung von einem UNIX-System in dasselbe Verzeichnis eines Windows-Systems 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 | Quelltext bearbeiten]

Englisch:

Einzelnachweise[Bearbeiten | Quelltext bearbeiten]

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