This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.2)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Zeichenketten und Zeichen /

Fortgeschrittenes Thema: ZeichencodesInhalt

2.7.8 Fortgeschrittenes Thema: Zeichencodierung

In Mathematica können Sie Sonderzeichen ansprechen, indem Sie Namen wie \[Alpha] oder explizite hexadezimale Codes wie \:03b1 verwenden. Wenn Mathematica Dateien schreibt, verwendet es in Voreinstellung diese Namen oder hexadezimalen Codierungen.

Mitunter werden Sie jedoch für zumindest einige Sonderzeichen Zeichencodierung verwenden wollen. Statt also Sonderzeichen durch Namen oder explizite hexadezimale Codes darzustellen, werden Sie sie dann durch Bit-Muster darstellen wollen, die jeweils auf ein bestimmtes Computersystem oder einen Zeichensatz zugeschnitten sind.

Konfiguration von Zeichencodierungen

Wenn Sie auf Ihrer Tastatur eine Taste oder eine Tastenkombination betätigen, so wird das Betriebssystem Ihres Rechners ein bestimmtes Bit-Muster an Mathematica senden. Als welches Zeichen dieses Bit-Muster innerhalb Mathematicas interpretiert wird, wird von der festgelegten Zeichencodierung abhängen.

Normalerweise wird die Notebook-Benutzeroberfläche für Mathematica die geeignete Zeichencodierung für jeden Code, den sie verwenden, automatisch festlegen. Wenn Sie Mathematica jedoch mit einer textorientierten Schnittstelle oder über Dateien oder Pipes nutzen, dann müssen Sie eventuell $CharacterEncoding explizit festlegen.

Durch Angabe eines entsprechenden Wertes für $CharacterEncoding werden Sie in der Regel erreichen können, daß Mathematica ungefilterten Text handhaben kann, der von einem beliebigen Textverarbeitungs- oder Betriebssystem erstellt wurde.

Beachten Sie aber: Während die gewöhnliche Darstellung der in Mathematica verwendeten Sonderzeichen sich uneingeschränkt zwischen verschiedenen Computersystemen portieren läßt, so gilt dies sicher nicht für Darstellungen mit Zeichencodierungen.

Einige von Mathematica unterstützte Zeichencodierungen

Mathematica kennt verschiedene Zeichencodierungen für verschiedene Computersysteme und verschiedene Sprachen.

Jedes Zeichen, das in einer bestimmten Zeichencodierung enthalten ist, wird von Mathematica in ungefilterter Form ausgegeben, wenn Sie diese Codierung angeben. Zeichen aber, die in der Codierung nicht enthalten sind, werden als vollständige Mathematica-Namen oder als hexadezimale Codes geschrieben.

Jedes in einer bestimmten Codierung enthaltene Zeichen kann in ungefilterter Form in Mathematica eingegeben werden, wenn Sie diese Codierung spezifizieren. Mathematica wird das Zeichen dann automatisch in seine eigene normale interne Form übersetzen.

Damit wird eine Zeichenkette in die Datei tmp geschrieben.

In[1]:= "a b c \[EAcute] \[Alpha] \[Pi] \:2766" >> tmp

Sonderzeichen werden in Voreinstellung mit ihren vollständigen Namen oder mit expliziten hexadezimalen Codes geschrieben.

In[2]:= !!tmp

"a b c é AlphaPi ?"

Damit wird Mathematica angewiesen, eine Zeichencodierung zu verwenden, die sich für romanische Schriften auf Macintosh eignet.

In[3]:= $CharacterEncoding = "MacintoshRoman"

Out[3]=

Jetzt werden diese Sonderzeichen in ungefilterter Form ausgegeben.

In[4]:= "a b c \[EAcute] \[Alpha] \[Pi] \:2766" >> tmp

Die ungefilterten Zeichen können nur dann gelesen werden, wenn Sie ein System haben, das die romanische Codierung des Macintosh verwendet.

In[5]:= !!tmp

"a b c é AlphaPi ?"

Dadurch wird Mathematica angewiesen, in Voreinstellung keine Zeichencodierung zu wählen.

In[6]:= $CharacterEncoding = None

Out[6]=

Sie können immer noch explizit Zeichencodierungen anfordern, die in bestimmten Funktionen verwendet werden sollen.

In[7]:= Get["tmp", CharacterEncoding->"MacintoshRoman"]

Out[7]=

Mathematica unterstützt 8- und 16-Bit-Zeichencodierungen. In einer Codierung wie "ISOLatin1" werden alle Zeichen als 8 Bit lange Bit-Muster dargestellt. In einer Codierung wie zum Beispiel "ShiftJIS" werden einige Zeichen aber 16 Bit lange Bit-Muster belegen.

Die meisten der von Mathematica unterstützten Zeichencodierungen enthalten ASCII als Untermenge. Deshalb gilt: Auch wenn Sie derartige Codierungen verwenden, können Sie noch normale Mathematica-Eingabe auf gewohnte Weise angeben und Sonderzeichen mit \[- und \:-Sequenzen spezifizieren.

Einige Zeichencodierungen enthalten ASCII jedoch nicht als Untermenge. Ein Beispiel ist die "Symbol"-Codierung, bei der die Zeichencodes, die normalerweise für a und b verwendet werden, stattdessen für und verwendet werden.

Dies liefert die normalen ASCII-Zeichencodes für einige englische Buchstaben.

In[8]:= ToCharacterCode["abcdefgh"]

Out[8]=

In der "Symbol"-Codierung werden diese Zeichencodes für griechische Buchstaben verwendet.

In[9]:= FromCharacterCode[%, "Symbol"]

Out[9]=

Umgang mit Zeichencodes unterschiedlicher Codierungen

Dies liefert die Codes, die Mathematica einigen Zeichen zuweist.

In[10]:= ToCharacterCode["abc\[EAcute]\[Pi]"]

Out[10]=

Dies sind die Codes, die denselben Zeichen in der romanischen Macintosh-Codierung zugewiesen werden.

In[11]:= ToCharacterCode["abc\[EAcute]\[Pi]", "MacintoshRoman"]

Out[11]=

Dies sind die Codes in der Standard-Windows-Codierung. Es gibt keinen Code für \[Pi] in dieser Codierung.

In[12]:= ToCharacterCode["abc\[EAcute]\[Pi]", "WindowsANSI"]

Out[12]=

Die intern von Mathematica verwendeten Zeichencodes basieren auf Unicode. Extern verwendet Mathematica in der Voreinstellung für Sonderzeichen jedoch immer reine ASCII-Sequenzen wie zum Beispiel \[Name] oder \:xxxx. Man kann Mathematica jedoch durch explizite Anweisung, die "Unicode"-Zeichencodierung zu verwenden, dazu bewegen, Zeichen in reiner 16-Bit Unicode-Form zu schreiben und zu lesen.

Fortgeschrittenes Thema: ZeichencodesInhalt