Skip to main content

Encodage UTF-8

Bases

Candidatures en CODESYS peut traiter une grande variété de caractères, par exemple, pour produire un message d'erreur dans différentes langues. Ou pour afficher des visualisations dans une langue sélectionnée par l'utilisateur qui accepte la saisie de l'utilisateur dans une grande variété de langues, de caractères ou de symboles.

Si un jeu de caractères complet n'est pas nécessaire, ou si un projet ne doit pas être modifié, les chaînes codées au format Latin-1 peuvent toujours être utilisées.

Tableau 3. Tableaux de jeux de caractères

Jeu de caractères

Numéro de page de code

La description

Encodage de caractère

ASCII

20127

  • 128 caractères

  • Convient aux textes en anglais

Caractère codé 7 bits

DOS-Latin-1

819, 850

  • Conforme à la norme ISO 8859

  • Convient aux langues d'Europe occidentale dans la fenêtre de ligne de commande Windows

Caractère codé 8 bits

Latin-1

28591

  • Conforme à la norme ISO-8859-1

  • Souvent utilisé pour les pages HTML avec äöüß mais sans € ou par exemple sans caractères français spéciaux

Caractère codé 8 bits

Encodage Windows 1252

1252

  • Jeu de caractères Windows par défaut pour les pays d'Europe occidentale

  • Windows utilise le format UTF-16 en interne

  • Contient tous les caractères de l'ISO 8859-1 et de l'ISO 8859-15, mais en partie avec un codage différent

Caractère codé 8 bits

Unicode

  • Jeu de caractères universel pour toutes les langues possibles, y compris les langues historiques, le braille, la musique ou les emojis

  • Plus de 100 000 caractères peuvent être affichés.

  • Chaque caractère a un code numérique.

  • Contrairement à l'ASCII, une séparation est faite entre l'attribution de points de code aux caractères et le codage des caractères.

  • Les codes numériques < 128 sont compatibles ASCII

  • Les codes numériques < 256 sont compatibles ISO 8859-1

Pour plus d'informations, consultez : https://home.unicode.org/

Unicode 14.0

144 697 caractères

UTF-16

1200

  • Unicode spécial

  • Utilisé dans certains systèmes d'exploitation (Windows, OS X) et langages de programmation (Java, .NET) pour la représentation interne des caractères

  • Il convient de noter que différentes architectures d'ordinateur codent différemment les caractères à 4 octets.

    Ordre des octets Little Endian pour UTF-16LE

Caractères codés 16 bits

Les caractères sont codés soit sur 2 octets, soit sur 4 octets.

UTF-8

65001

  • Format de codage orienté octet des caractères Unicode

  • Le plus répandu

  • Utilisé dans les systèmes d'exploitation GNU/Linux et Unix, et dans divers services Internet (courriel, Web, navigateur)

  • Compatible avec les caractères ASCII dans les 128 premiers caractères (0–127)

Tuple de mots de 8 bits par caractère

Les caractères sont codés dans différentes longueurs de 1 à 4 octets.



UTF-8 dans CODESYS

Astuce

L'encodage UTF-8 est l'encodage avec le jeu de caractères le plus complet. Par conséquent, il est recommandé d'activer le codage UTF-8 pour les nouveaux projets ainsi que pour les projets existants à utiliser dans un nouveau contexte.

Tableau 4. Encodage à l'échelle du projet dans CODESYS

Type de données

Option de compilation : encodage UTF8 pour STRING

Quel encodage est utilisé à l'échelle du projet ?

STRING

Autorisé

UTF-8

Désactivé

Encodage Windows 1252 (encodage Windows par défaut)

Latin-1

WSTRING

Autorisé

UTF-16

Désactivé

UTF-16



Dans CODESYS, la STRING Le type de données peut être encodé aux formats Latin-1 ou UTF-8. le WSTRING Le type de données encode toujours ses caractères en Unicode en UTF-16.

Encodage d'un seul littéral de chaîne au format UTF-8

Même si le format d'encodage à l'échelle du projet est défini sur Latin-1, vous pouvez encoder un seul littéral au format UTF-8. Pour ce faire, ajoutez le UTF8# préfixe de type au littéral.

{attribute 'monitoring_encoding' := 'UTF-8'}
strVarUtf8: STRING := UTF8#'你好,世界!ÜüÄäÖö';

Pour plus d'informations, voir : Constante : Chaîne UTF8#; Attribut Pragma : monitoring_encoding

Conversion de chaîne pour l'encodage UTF-8

Si vous avez activé le codage UTF-8 à l'échelle du projet, vous pouvez utiliser les fonctions de conversion de chaîne comme d'habitude.

Manipulation de chaînes

Utilisez les fonctions de la bibliothèque pour manipuler vos chaînes.

Si STRING variables doivent être manipulées, alors un accès d'index à une variable au format ASCII conduit souvent au résultat souhaité. Il vaut mieux ne pas utiliser cette construction. Ce n'est pas seulement un mauvais style de programmation. Pour aggraver les choses, avec le codage UTF-8, l'accès à l'index entraîne une manipulation indésirable des chaînes.

Encodage UTF-8 uniquement pour la configuration à l'échelle du projet

Un encodage UTF-8 est utilisé si l'option de compilation à l'échelle du projet Encodage UTF8 pour STRING est autorisé. Les fonctions de la bibliothèque et les modules complémentaires sont alors également orientés en fonction de ce paramètre.

Si vous utilisez des chaînes uniques encodées en UTF-8, vous devez vous assurer qu'elles sont interprétées correctement partout où elles sont utilisées. Par exemple, une variable de chaîne dans le serveur OPC sera convertie en UTF-8 avant d'être transférée à un client si le paramètre n'est pas sélectionné. Des valeurs telles que UTF8#'äöü' serait alors mal interprété. Des problèmes similaires peuvent survenir lors de la sortie de chaînes dans la visualisation.