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 |
|
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 |
|
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 |
|
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 |
|
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 |
| Heure GMT |
[Répondre] |
|
Administration:
Ouvrir / Fermer / Supprimer /
Déplacer
|
|