Grundlagen
Anwendungen in CODESYS können eine Vielzahl von Zeichen verarbeiten, zum Beispiel um eine Fehlermeldung in verschiedenen Sprachen auszugeben. Oder um Visualisierungen in einer vom Benutzer gewählten Sprache anzuzeigen, die Benutzereingaben in einer Vielzahl von Sprachen, Zeichen oder Symbolen akzeptiert. Ist ein umfassender Zeichensatz nicht erforderlich oder soll ein Projekt nicht verändert werden, können auch Zeichenketten verwendet werden, die im Latin-1-Format kodiert sind.
Zeichensatz |
Code Seitenzahl |
Beschreibung |
Zeichencodierung |
---|---|---|---|
ASCII |
20127 |
|
7-Bit kodiertes Zeichen |
DOS-Latein-1 |
819, 850 |
|
8-Bit kodiertes Zeichen |
Latein-1 |
28591 |
|
8-Bit kodiertes Zeichen |
Windows 1252 Kodierung |
1252 |
|
8-Bit kodiertes Zeichen |
Unicode |
|
|
|
Unicode 14.0 |
|
144.697 Zeichen |
|
UTF-16 |
1200 |
|
16-Bit kodierte Zeichen Die Zeichen werden entweder in 2 Bytes oder 4 Bytes kodiert. |
UTF-8 |
65001 |
|
Tupel von 8-Bit-Wörtern pro Zeichen Die Zeichen werden in unterschiedlichen Längen von 1 bis 4 Byte kodiert. |
UTF-8 in CODESYS
Die UTF-8-Kodierung ist die Kodierung mit dem umfangreichsten Zeichensatz. Daher wird empfohlen, die UTF-8-Kodierung sowohl für neue Projekte als auch für bestehende Projekte, die in einem neuen Kontext verwendet werden sollen, zu aktivieren.
Datentyp |
Option Kompilieren: UTF8-Kodierung für STRING |
Welche Kodierung wird projektweit verwendet? |
---|---|---|
STRING |
Enabled |
UTF-8 |
Ausgeschaltet |
Windows 1252-Kodierung (Standard-Windows-Kodierung) Latein-1 |
|
WSTRING |
Enabled |
UTF-16 |
Ausgeschaltet |
UTF-16 |
In CODESYS kann der Datentyp „STRING“ in den Formaten Latin-1 oder UTF-8 kodiert werden. Der Datentyp „WSTRING“ kodiert seine Zeichen immer als Unicode in UTF-16.
Kodierung eines einzelnen String-Literal im UTF-8-Format
Auch wenn das projektweite Kodierungsformat auf Latin-1 eingestellt ist, können Sie ein einzelnes Literal im UTF-8-Format kodieren. Fügen Sie dazu dem Literal das Typ-Präfix „UTF8#“ hinzu.
{attribute 'monitoring_encoding' := 'UTF-8'} strVarUtf8: STRING := UTF8#'你好,世界!ÜüÄäÖö';
Für weitere Informationen siehe:
Konstant: UTF8# Zeichenkette; ⮫ „Konstant: UTF8# Zeichenkette “
Pragma-Attribut: ⮫ monitoring_encoding
String-Konvertierung für UTF-8-Kodierung
Wenn Sie die UTF-8-Kodierung projektweit aktiviert haben, können Sie die Stringkonvertierungsfunktionen wie gewohnt verwenden.
String-Manipulation
Verwenden Sie Bibliotheksfunktionen, um Ihre Zeichenketten zu manipulieren.
Wenn „STRING“ Variablen manipuliert werden sollen, dann führt ein Indexzugriff auf eine Variable im ASCII-Format oft zum gewünschten Ergebnis. Es ist besser, dieses Konstrukt nicht zu verwenden. Es handelt sich nicht nur um einen schlechten Programmierstil. Erschwerend kommt hinzu, dass bei der UTF-8-Kodierung der Indexzugriff zu unerwünschten Zeichenfolgenmanipulationen führt.
UTF-8-Kodierung nur bei projektweiter Konfiguration
Eine UTF-8-Kodierung wird verwendet, wenn die projektweite Kompilieroption UTF8-Kodierung für STRING aktiviert ist. Bibliotheksfunktionen und Add-ons orientieren sich dann ebenfalls an dieser Einstellung.
Wenn Sie einzelne UTF-8-kodierte Zeichenketten verwenden, müssen Sie sicherstellen, dass sie überall, wo sie verwendet werden, korrekt interpretiert werden. So wird z. B. eine String-Variable im OPC-Server in UTF-8 konvertiert, bevor sie an einen Client übertragen wird, wenn die Einstellung nicht aktiviert ist. Werte wie „UTF8#'äöü'“ würden dann falsch interpretiert werden. Ähnliche Probleme können bei der Ausgabe von Zeichenketten in der Visualisierung auftreten.