Charakter (Computer) - Character (computing)

In der computer- und maschinenbasierten Telekommunikationsterminologie ist ein Zeichen eine Informationseinheit , die grob einem Graphem , einer graphemähnlichen Einheit oder einem Symbol entspricht , beispielsweise in einem Alphabet oder einer Silbenschrift in der geschriebenen Form einer natürlichen Sprache .

Beispiele für Zeichen sind Buchstaben , numerische Ziffern , übliche Satzzeichen (wie "." oder "-") und Leerzeichen . Zum Konzept gehören auch Steuerzeichen , die nicht sichtbaren Symbolen entsprechen, sondern Anweisungen zur Formatierung oder Bearbeitung des Textes. Beispiele für Steuerzeichen sind Wagenrücklauf oder Tabulator sowie Anweisungen für Drucker oder andere Geräte, die Text anzeigen oder anderweitig verarbeiten.

Zeichen werden normalerweise zu Strings kombiniert .

Historisch wurde der Begriff Zeichen auch verwendet, um nur eine bestimmte Anzahl von zusammenhängenden Bits zu bezeichnen . Während heute meist davon ausgegangen wird, dass sich ein Zeichen auf 8 Bit (ein Byte ) bezieht , waren andere Definitionen wie der 6-Bit-Zeichencode einst beliebt (nur mit Großbuchstaben , während genügend Bits auch Kleinbuchstaben darstellen , nicht mit Zahlen und Satzzeichen). erlaubt) und sogar 5-Bit-Baudot-Code wurden in der Vergangenheit auch verwendet, und obwohl der Begriff auch auf 4 Bits mit nur 16 möglichen Werten angewendet wurde, war er nicht dazu gedacht und kann dies auch nicht vollständig darstellen Englisches Alphabet. Siehe auch Universal Character Set-Zeichen , bei denen 8 Bit nicht ausreichen, um sie darzustellen, während alle mit einer oder mehreren 8-Bit- Codeeinheiten mit UTF-8 dargestellt werden können .

Codierung

Computer und Kommunikationsgeräte stellen Zeichen unter Verwendung einer Zeichencodierung dar , die jedes Zeichen etwas zuordnet – eine ganze Zahl , die typischerweise durch eine Ziffernfolge dargestellt wird – die gespeichert oder über ein Netzwerk übertragen werden kann . Zwei Beispiele für übliche Kodierungen sind ASCII und die UTF-8- Kodierung für Unicode . Während die meisten Zeichenkodierungen Zeichen auf Zahlen und/oder Bitfolgen abbilden, repräsentiert der Morsecode stattdessen Zeichen unter Verwendung einer Reihe von elektrischen Impulsen unterschiedlicher Länge.

Terminologie

In der Vergangenheit wurde der Begriff Zeichen häufig von Branchenexperten verwendet, um sich auf ein codiertes Zeichen zu beziehen, das oft durch die Programmiersprache oder API definiert wird . In ähnlicher Weise wurde Zeichensatz weit verbreitet verwendet, um sich auf ein spezifisches Repertoire von Zeichen zu beziehen, die auf spezifische Bitfolgen oder numerische Codes abgebildet wurden. Der Begriff Glyphe wird verwendet, um eine bestimmte visuelle Erscheinung eines Zeichens zu beschreiben. Viele Computer - Schriften bestehen aus Glyphen , die durch den numerischen Code des entsprechenden Zeichens indiziert sind.

Mit dem Aufkommen und der weit verbreiteten Akzeptanz von Unicode und bit-agnostisch codierten Zeichensätzen wird ein Zeichen zunehmend als Informationseinheit gesehen , unabhängig von einer bestimmten visuellen Erscheinungsform. Der internationale Standard ISO/IEC 10646 (Unicode) definiert Zeichen oder abstrakte Zeichen als „ein Element einer Reihe von Elementen, die für die Organisation, Kontrolle oder Darstellung von Daten verwendet werden“. Die Unicode-Definition ergänzt dies durch erläuternde Hinweise, die den Leser unter anderem dazu anregen, zwischen Zeichen, Graphemen und Glyphen zu unterscheiden. Diese Differenzierung ist ein Beispiel für das umfassendere Thema der Trennung von Präsentation und Inhalt .

Zum Beispiel wird der hebräische Buchstabe Aleph ("א") oft von Mathematikern verwendet, um bestimmte Arten von Unendlichkeit (ℵ) zu bezeichnen, aber er wird auch im gewöhnlichen hebräischen Text verwendet. In Unicode werden diese beiden Verwendungen als unterschiedliche Zeichen betrachtet und haben zwei unterschiedliche numerische Unicode-Identifikatoren (" Codepunkte "), obwohl sie identisch wiedergegeben werden können. Umgekehrt kann das chinesische Logo für Wasser ("水") in japanischen Texten ein etwas anderes Aussehen haben als in chinesischen Texten, und lokale Schriftarten können dies widerspiegeln. Trotzdem werden sie in Unicode als dasselbe Zeichen betrachtet und haben denselben Codepunkt.

Der Unicode-Standard unterscheidet auch zwischen diesen abstrakten Zeichen und codierten Zeichen oder codierten Zeichen , die mit numerischen Codes gepaart wurden, die ihre Darstellung in Computern erleichtern.

Charakter kombinieren

Das Kombinationszeichen wird auch von Unicode adressiert. Unicode ordnet beispielsweise jedem von

  • 'ich' (U+0069),
  • das Kombinieren diaeresis (U + 0308) und
  • 'ï' (U+00EF).

Dadurch ist es möglich, das mittlere Zeichen des Wortes 'naiv' entweder als einzelnes Zeichen 'ï' oder als Kombination des Zeichens 'i' mit der kombinierenden Diaerese zu kodieren: (U+0069 Lateinischer Kleinbuchstabe I + U+0308 KOMBINIERENDE DIAERESE); dies wird auch als 'ï ' wiedergegeben.

Diese werden vom Unicode-Standard als kanonisch äquivalent betrachtet.

verkohlen

Ein char in der Programmiersprache C ist ein Datentyp mit der Größe von genau einem Byte , der wiederum so definiert ist, dass er groß genug ist, um ein beliebiges Mitglied des „Basisausführungszeichensatzes“ aufzunehmen. Die genaue Anzahl der Bits kann per CHAR_BITMakro überprüft werden . Die bei weitem gebräuchlichste Größe ist 8 Bit, und der POSIX-Standard erfordert 8 Bit. In neueren C-Standards ist char erforderlich, um UTF-8- Codeeinheiten aufzunehmen, die eine Mindestgröße von 8 Bit erfordern.

Ein Unicode- Codepunkt kann bis zu 21 Bit erfordern. Dies passt auf den meisten Systemen nicht in ein Zeichen , daher wird für einige von ihnen mehr als ein Zeichen verwendet, wie bei der UTF-8 -Codierung mit variabler Länge, bei der jeder Codepunkt 1 bis 4 Byte benötigt. Darüber hinaus kann ein "Zeichen" mehr als einen Codepunkt erfordern (z. B. beim Kombinieren von Zeichen ), je nachdem, was mit dem Wort "Zeichen" gemeint ist.

Die Tatsache, dass ein Zeichen historisch in einem einzigen Byte gespeichert wurde, führte dazu, dass die beiden Begriffe ("char" und "character") in den meisten Dokumentationen austauschbar verwendet wurden. Dies macht die Dokumentation oft verwirrend oder irreführend, wenn Multibyte-Codierungen wie UTF-8 verwendet werden, und hat zu ineffizienten und falschen Implementierungen von String-Manipulationsfunktionen geführt (z Byte). Die moderne POSIX-Dokumentation versucht, dies zu beheben, indem sie "character" als eine Folge von einem oder mehreren Bytes definiert, die ein einzelnes Grafiksymbol oder einen Steuercode darstellen, und versucht, "byte" zu verwenden, wenn auf char-Daten Bezug genommen wird. Es enthält jedoch immer noch Fehler wie das Definieren eines Arrays von char als Zeichenarray (anstelle eines Bytearrays ).

Unicode kann auch in Strings gespeichert werden, die aus Codeeinheiten bestehen, die größer als char sind . Diese werden als „ breite Zeichen “ bezeichnet. Der ursprüngliche C-Typ hieß wchar_t . Da einige Plattformen wchar_t als 16 Bit und andere als 32 Bit definieren, haben neuere Versionen char16_t , char32_t hinzugefügt . Selbst dann sind die zu speichernden Objekte möglicherweise keine Zeichen, zum Beispiel wird UTF-16 mit variabler Länge oft in Arrays von char16_t gespeichert .

Andere Sprachen haben auch einen char- Typ. Einige wie C++ verwenden 8 Bits wie C. Andere wie Java verwenden 16 Bits für char , um UTF-16-Werte darzustellen.

Siehe auch

Verweise

Externe Links