StringToUTF8
Conversion d'une chaîne de caractères en sa représentation UTF8
Syntaxe
function StringToUTF8(str: String): String
Remarques
Une chaîne de caractères est une succession de caractères.
A chaque caractère correspond un point de code, pris dans un répertoire normalisé par Unicode.
Ce répertoire possède pour l'instant environ 110 000 caractères, mais il peut théoriquement occuper 17 zones de 65 536 points de codes.
En mémoire d'exécution des scripts, les chaînes sont gérées comme des éléments de 16 bits.
Quand on manipule du texte, l'encodage des caractères en mémoire est utf-16 (cf. Langage/TypesDeBase)
NB : on peut aussi utiliser les chaînes pour manipuler une succession de valeurs binaires 8-bits. Chaque valeur binaire utilise alors une position dans la chaîne et seul l'octet de poids faible est pris en compte (cas par exemple de la fonction SaveStringToFile).
Quand on a besoin d'échanger ces chaînes de caractères avec d'autres logiciels ou de les écrire sur le disque dur, il faut se poser la question de la représentation informatique de ces caractères (le nombre de bits, l'encodage, etc.).
Souvent, les protocoles usuels attendent de l'UTF-8.
StringToUTF8 permet de convertir une chaîne vers l'encodage UTF-8.
Il faut noter que la fonction renvoie une autre chaîne. Mais dans cette dernière, quand on l'affiche, tous les caractères dont le point de code est supérieur à 127 occupent maintenant 2, 3 ou 4 caractères.
La conversion inverse se fait avec UTF8ToString.
Pour créer simplement un fichier texte qui respecte l'encodage UTF-8 et qui commence par la BOM, utiliser SaveStringToTextFile.
Exemples
PrintLn(StringToUTF8('note')); // affiche note
// En fonction de leur point de code, les autres caractères occupent 2, 3 ou 4 octets
PrintLn(StringToUTF8('noté')); // le "é" est encodé sur 2 octets : noté
PrintLn(StringToUTF8('€')); // encodé sur 3 octets : €
// On peut appliquer la transformation inverse :
PrintLn(UTF8ToString('noté')); // affiche noté