Unicode

Introduction

'Unicode' est un terme utilisé pour désigner un jeu de caractères étendu destiné à afficher du texte dans de nombreux langages différents (y compris les langages non latins, avec beaucoup de symboles différents tel que le Japonais, le Coréen etc.). En unicode, chaque symbole a sa place propre, et il n'est pas nécessaire d'avoir une table de caractères par langue.

Pour simplifier, l'unicode peut être vu comme une très grande table ascii, qui n'a pas 256 caractères mais 65536. Donc, pour stocker un caractère, 2 octets seront nécessaires en mémoire (c'est important de noter cette différence, notamment lors de l'utilisation de pointeurs vers des chaînes de caractères).

Voici quelques liens pour se faire une meilleure idée de l'unicode (lecture vivement conseillée):

Information générale sur l'unicode (Français)
Information générale sur l'unicode (Anglais)
L'unicode et les BOM

Unicode et Windows

PureBasic utilise l'encodage UCS2 qui est aussi le format utilisé de manière interne par l'API unicode MS Windows, donc aucune conversion n'est nécessaire lorsqu'un fonction est appelée. Si le programme utilise des fonctions API, PureBasic utilisera automatiquement la version unicode de la fonction si elle est disponible (par exemple MessageBox_() pointera vers MessageBoxW()). Il en va de même pour toutes les structures et les constantes API supportées par PureBasic.

UTF-8

L'UTF-8 est une autre façon d'encoder une chaîne de caractères unicode. Contrairement à UCS2 qui prend toujours 2 octets par caractère, UTF-8 utilise un encodage variable pour chaque caractère (jusqu'à 4 octets pour représenter un caractère). Le point fort de l'UTF-8 est qu'il ne contient pas de caractère nul lors de son encodage, donc le texte peut être édité facilement. De plus, les caractères ASCII de 1 à 127 sont conservés (ils ne sont pas modifiés lors de l'encodage) ce qui rend le texte à peu près lisible pour les langues latines. Son point faible est le côté variable de ses caractères, ce qui nécessite des routines de gestion de texte plus lentes.

PureBasic utilise l'UTF-8 comme encodage par défaut pour l'écriture et la lecture des chaînes de caractères dans les fichiers (bibliothèques Fichier et Préférence), pour que les fichiers soient complètement indépendants de la plateforme.

Le compilateur du PureBasic gère aussi les fichiers sources ascii et UTF-8 (les fichiers UTF-8 doivent avoir une entête BOM). Les deux types de fichiers peuvent être combinés dans un programme sans problème: un fichier source ASCII peut inclure un fichier source UTF-8 et vice-versa, tant que les variable .c et .s créées par l'utilisateur (c'est-à-dire "x" ou 'x') ne contiennent que des caractères avec un code <= 127 dans les fichiers ASCII. Lors du développement d'un programme, il est recommandé de mettre l'IDE en mode UTF-8, pour que tous les fichiers sources soient enregistrés en unicode.