Re: Unicode hexadecimale

Posté par drcharly93 le 11/7/2007 13:21:27
Bonjour Karine,

Devant ton assistance j'ai cherché comment afficher des caractères unicode nativement, mais je n'ai pas trouvé de solution car la fonction Caract() n'accèpte pas de code au delà de 255
06AD en hexa correspond en décimal à 1709

Mes recherches:
Partant du principe que le copier/coller de ce caractère fonctionnait très bien entre internet et word j'ai tenté la même opération dans un champs RTF et Bingo cela fonctionne aussi.

Alors comment faire pour afficher ces caractères
J'ai commencé par regarder l'entête d'un fichier RTF vide sous WinDev:
{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs36\


Le f0 pour sélectionner la police et fs36 pour la taille des caractères

j'ai ensuite collé le caractère dans le contenu du champs RTF et lancé le programme, le caractère affiché j'ai lancé le débuggeur pour récupérer la chaine RTF et j'ai analysé le contenu.

exemple de caratères affichés:
ڭ ڮ گ
Donnent en RTF:
\u1709? \u1710? \u1711?

Il en ressort ceci:
il vous faut parcourir vos codes héxa les convertir via une boucle en décimale puis alimenter une chaine qui sera concaténée de la façon suivante:
\u<Code décimal>?
Exemple
\u1710?
vous concaténez toutes vos valeurs
ensuite vous les ajoutez à l'entête RTF puis vous ajouter en fin "\par}"
Vous affecter le résultat au champs RTF et vous avez vos caractères qui s'affichent.
Ce qui donne au final:
{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fnil\fcharset0 MS Shell Dlg;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs36\u1709? \u1710? \u1711?\par}

Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=18&topic_id=5252&post_id=21786