Bonjour,
Je suis face à un petit problème d'encodage de caractères en UTF8, en VB classique.
J'ai un fichier XML généré en UTF8, que j'utilise ensuite dans une zone de texte.
Pas de problème particulier pour les caractères "classiques", j'ai trouvé une petite fonction qui fonctionne très bien, utilisant la fonction MultiByteToWideChar.
Là où ça se corse, c'est que certains fichiers générés comportent des caractères spéciaux (caractères grecs, ce qui donne des trucs du genre : EKINOXE ΠΟΡΤΑ ΔΙΑΦΑΝΗ). La création du fichier fonctionne très bien, mais quant à la lecture de ce dernier, impossible d'afficher les caractères spéciaux correctement.
Je vous donne la fonction complète utilisée pour le décodage de l'UTF8 :
Ma question est la suivante : existe t'il un moyen plus robuste pour afficher ce genre de caractère, ou dois je me faire à l'idée de voir des "?" un peu partout à l'affichage ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As String, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long Private Const CP_UTF8 = 65001 Public Function UTF8_Decode(ByVal wText As String) As String Dim vNeeded As Long Dim vSize As Long vSize = Len(wText) vNeeded = MultiByteToWideChar(CP_UTF8, 0, wText, vSize, 0, 0) UTF8_Decode = String(vNeeded, 0) MultiByteToWideChar CP_UTF8, 0, wText, vSize, StrPtr(UTF8_Decode), vNeeded End Function
Merci d'avance.
Partager