Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
VB Research Center > API >
conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)
[S'enregistrer] [Profil] [Préférences] [Se déconnecter] [Rechercher]
[Répondre]
Auteur Message
Thanos
Junior

conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)

bonjour,

je veux convertire du texte en UTF-8 sous win95 avec l'API MultiByteToWideChar. Ca marche tres bien sous 98, NT, 2000 mais pas sous 95 :/

voila le code que j'utilise :

Private Const CP_UTF8 = 65001

Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpDefaultChar As Long, ByVal lpUsedDefaultChar As Long) As Long

Public Function UTF8_Encode(ByVal Text As String) As String

Dim sBuffer As String
Dim lLength As Long

If Text <> "" Then
lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, 0, 0, 0, 0)
sBuffer = Space$(lLength)
lLength = WideCharToMultiByte(CP_UTF8, 0, StrPtr(Text), -1, StrPtr(sBuffer), Len(sBuffer), 0, 0)
sBuffer = StrConv(sBuffer, vbUnicode)
UTF8_Encode = Left$(sBuffer, lLength - 1)
Else
UTF8_Encode = ""
End If

End Function

après utilisation de l'API MultiByteToWideChar, ILenght est à 0 et sBuffer est vide (au lieu de contenir le texte convertie)

est-ce que quelqu'un sait comment faire ?
13 May 2004 @ 17:00 Voir le profil de Thanos   Envoyer un message à Thanos Modifier ce message
fredcvn
Junior

Re:conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)

As tu trouvé la solution ? Je pense que la fonction multibytetowidechar ne fonctionne pas sous win95.
Je recherche moi la fonction inverse UTF-8 en format windows . As tu qqchose pour faire ca ?.
Merci
15 Jun 2004 @ 09:18 Voir le profil de fredcvn   Envoyer un message à fredcvn Modifier ce message
Anonymous
Unregistered

Re:conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)

Oui, tout simplement, CP_UTF8 n'est pas présent sous windows 95 (sous réserve du fait qu'installer des versions modernes de certains logiciels MSFT comme IE, Office, Outlook etc... peut potentiellement la rajouter)

Pour la conversion en sens inverse, il suffit d'appeler WideCharToMultyByte
08 Jul 2004 @ 17:28 Modifier ce message
nihaoma
Junior

Re:conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)

Hello tout le monde,
Il y à quelque chose que je ne comprends pas avec l'UTF8 et j'espères que vous pourrez me répondre.
en effet, si code la lettre 'é' grace à la fonction font vous parlez (et j'obtient le meme résultat avec beaucoup d'autre code qui font la meme chose avec ou sans les API), j'obient ceci: é
cependant, si je prend Outlook express, que je précise le codage en UTF8, et que je meme dans le sujet mon 'é', le source du message me donne ceci en sujet: =?utf-8?B?w6k=?=. sachant que la chaine =?utf-8?B? signifie que ce qui y'a après est coder en UTF8 et que ?= signifie que c'est la fin de la chaine codée, je me retrouve avec mon 'é' codé ainsi: w6k !!! comme expliquer cette différence, et surtout, puisque ca parrait etre une norme (plusieurs logiciels de messagerie sont capable d'interpréter correctement le sujet de cet email) ou trouver de la doc la dessus afin d'etre capable de faire une fonction sachant me lire ce fameux 'w6k' ????
merci par avance car je suis au taff, je dois coder cette fonction et là je suis perdu !!!
23 Aug 2005 @ 12:03 Voir le profil de nihaoma   Envoyer un message à nihaoma Modifier ce message
nihaoma
Junior

Re:conversion de texte en UTF-8 avec VB6, sous win95 (API MultiByteToWideChar)

encore moi...
finalement, j'ai trouver ma réponse, alors si ca interesse quelqu'un, voici la solution:
en fait, dans la chaine =?utf-8?B?, seulement '=?utf-8' signifie que c'est de l'UTF8, et ensuite, '?B?' signifie que c'est aussi coder en Base64. (si ca avait été par exemple =?utf-8?Q?, le ?Q? aurait signifier que le reste est coder en UTF8 et en Quotted Printable (pas de codage en fait)).
Voila, bah il ne reste qu'a passer mon fameux w6k= dans un decodeur Base64, j'obtient bien é qui en UTF8 donne é...la boucle est bouclée, et je vais pouvoir prendre un aspirine ! :o)
23 Aug 2005 @ 12:31 Voir le profil de nihaoma   Envoyer un message à nihaoma Modifier ce message
Heure GMT
[Répondre]
Administration: Ouvrir / Fermer / Supprimer / Déplacer
Accès rapide :
Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr