Je cherche à écrire une classe VB pour encoder et décoder des données en Base64. Mon code marche très bien pour les chaîne de caractères conventionnel mais plante lamentablement lorsqu'il s'agit de données binaire.
L'encodage consiste à convertir les données binaires en une chaîne de caractère ASCII puis d'encoder la chaine en base64. Le decodage quand à lui se limite à décoder une chaîne en base64 et l'écrire dans un fichier vierge ou dans une variable (suivant qu'il s'agisse de données binaires ou de texte).
J'ai trouvé un article (particulièrement indigeste) sur MSDN parlant de ce problème, mais l'anglais n'est pas mon fort et les notions abordées commence à me dépasser légèrement. :p
http://msdn.microsoft.com/library/de...og6_topic1.asp
Mais le résultat est éroné même s'il est similaire à l'original comme le rajout de " 'd" en debut de chaine ou les changements des "Ž" en "}" ou encore des "‰" en "0".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 ' Récupération de données binaires dans un fichier Private Function getBinaryFile(strFilePath As String) ' Déclaration des variables Dim oStream Dim i, strValue ' Création de l'objet Set oStream = New ADODB.Stream ' Ouverture de l'objet oStream.Open ' On récupère les données binaires du fichier oStream.Type = 1 oStream.LoadFromFile strFilePath ' On convertit les données binaires en ASCII strValue = StrConv(oStream.Read, vbUnicode) For i = 1 To LenB(binValue) Step 2 strValue = strValue & Chr(AscB(MidB(binValue, i, 1))) Next ' On renvoie les données binaires getBinaryFile = strValue ' On détruit l'objet Set oStream = Nothing End Function
Je ne pense pas que l'encodage/decodage en base64 soit fautif puisque c'est un code que j'ai recyclé à partir de l'ASP et qu'il fonctionnait parfaitement avec des mail contenant du text en base64 (chaîne de caractères) et des images jointes (données binaires).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Original (extrait): GIF89aËè³ ï ïïïÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ, Ëè (...) FgT!ÃÒÙi ©É 9 ; Copie (extrait): 'dGIF89aËè³ ï ïïïÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ, Ëè (...) FgT!ÃÒ}Ùi0 ©É 90
Donc voilà, si quelqu'un a des conseils sur comment éffectuer proprement la conversion de données binaire en chaines de caractère sous VB6, ou l'adresse d'un tutorial simple et explicite sur ce sujet, je suis preneur.
Merci d'avance pour toutes propositions permettant de faire avancer mon schmilblick. ^^
A noter que sous ASP, la conversion du binaire en ASCII était plus simple (le code ci dessous ne reprend que la convertion binaire vers ASCI):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Private Function BinaryToString(binValue) Dim i, strValue For i = 1 To LenB(binValue) strValue = strValue & Chr(AscB(MidB(binValue, i, 1))) Next BinaryToString = strValue End Function
Partager