14.2 Zeichencodierungen

Die meisten Zeichen- und Textbibliotheksbefehle akzeptieren einen optionalen Parameter, der die zu verwendende Zeichencodierung angibt. Dieser Parameter teilt dem Befehl mit, wie die von Ihnen übergebenen Zeichenfolgen intern formatiert sind, d.h. welche Zeichencodierung sie verwenden.

Normalerweise sollten Sie diesen Parameter überhaupt nicht verwenden, denn ab Hollywood 7.0 sollte jeder Text als UTF-8 gespeichert werden. Unter bestimmten Umständen kann es jedoch notwendig sein, den optionalen Zeichencodierungsparameter zu verwenden. Zum Beispiel können Zeichenketten von Hollywood auch rohe Binärdaten enthalten. Diese Daten sind natürlich im UTF-8-Format nicht gültig und die Zeichenketten-Befehle werden sie ablehnen. Darum muss dann diesen Befehlen mitgeteilt werden, dass es sich nicht um UTF-8, sondern um rohe Folge von Bytes handelt. Dies kann durch die Übergabe der Konstante #ENCODING_RAW im Zeichencodierungs-Parameter erfolgen.

Hier ist ein Überblick über die verschiedenen Kodierungen in Hollywood:

#ENCODING_UTF8:
Dies ist die Standard-Kodierung ab Hollywood 7.0 und sollte verwendet werden, wann immer Sie mit Texten arbeiten.

#ENCODING_ISO8859_1:
Dies war die Standard-Kodierung vor Hollywood 7.0. Dies kann nützlich sein, wenn Sie mit Binärdaten oder Zeichenketten arbeiten müssen, die nicht als UTF-8 formatiert sind. Lassen Sie sich nicht vom Namen verwirren: Auch wenn die Konstante ISO 8859-1 heißt, kann sie tatsächlich mit allen Arten von Nicht-UTF-8-Kodierungen verwendet werden, da es für die meisten Zeichenketten-Bibliotheksbefehle keinen Unterschied macht, ob die Kodierung ISO 8859-1 oder ein anderer Zeichensatz ist, solange ein Zeichen ein Byte ist, was für alle Nicht-UTF-8-8-Bit-Kodierungen gilt. Die einzigen Befehle, die mit Nicht-ISO-8859-1-Kodierungen nicht funktionieren, sind Befehle wie UpperStr(), LowerStr() usw., da sie die Umwandlung von Groß- und Kleinbuchstaben auf der Grundlage der ISO 8859-1-Zeichentabelle durchführen und andere Kodierungen andere Zeichentabellen erfordern, sodass diese Befehle für Nicht-ISO-8859-1-Text keine korrekten Ergebnisse liefern. Da #ENCODING_ISO8859_1 auch mit anderen Kodierungen verwendet werden kann, gibt es auch die Synonymkonstante #ENCODING_RAW, die semantisch weniger irreführend ist, da sie nicht suggeriert, dass Zeichenketten im ISO 8859-1-Format vorliegen (siehe unten).

#ENCODING_RAW:
Dies entspricht #ENCODING_ISO8859_1, aber aus semantischer Sicht könnte die Verwendung dieser Option anstelle von #ENCODING_ISO8859_1 vorzuziehen sein, da sie nicht suggeriert, dass Zeichenketten in der Kodierung ISO 8859-1 vorliegen oder vorliegen müssen. Stattdessen besagt sie lediglich, dass Zeichenketten einfach als Folge von rohen 8-Bit-Zeichen behandelt werden.

#ENCODING_AMIGA:
Dies legt den Standardzeichensatz des Systems auf AmigaOS und kompatiblen Systemen fest. Diese Konstante wird nur von ConvertStr() und nur auf AmigaOS und kompatiblen Systemen unterstützt. #ENCODING_AMIGA ermöglicht es Ihnen, zwischen AmigaOS' Standard-Zeichensatz und UTF-8 (oder umgekehrt) zu konvertieren.

Sie können den Befehl SetDefaultEncoding() verwenden, um die Standard-Zeichencodierungen für die Zeichenkette- und Textbibliotheken zu ändern. Siehe SetDefaultEncoding für Details.


Navigation zeigen