Comm WinSock VB6 <-> VB.Net (Encoding, UTF-8, Unicode)

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 17 déc. 2013 à 12:35
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 17 déc. 2013 à 14:36
Bonjour,

Ce n'est pas à proprement parler une question mais plutôt une astuce nécessaire si on veut faire dialoguer deux applications :
- l'une faite en VB6 et utilisant le composant Winsock
- l'autre faite sous VB.Net

La méthode .SendData du composant Winsock (VB6) propose d'envoyer un tableau de Bytes, mais elle accepte aussi d'utiliser une chaine de caractère, en l'occurrence Unicode puisque VB6 gère des chaines Unicode.

Le problème qui se pose est que les caractères accentués émis par VB6 ne sont pas correctement transmis et reçu par VB.Net.
La raison est simple et tient dans une simple ligne dans l'aide que j'ai mis 4h à trouver :
"Si une chaîne UNICODE est passée en entrée, elle est convertie en une chaîne ANSI avant d'être envoyée sur le réseau"

Or, côté VB.Net, ANSI n'est pas reconnu comme un encodage et, à ma connaissance, il n'y a pas d'outil de conversion dans les frameworks.

Solution : Convertir proprement la chaine de caractères à transmettre dans le SendData en préparant le tableau de Byte nécessaire.

Après quelques recherches, la méthode la plus rapide et la plus simple est cette source trouvée sur le Net : http://www.nonhostile.com/howto-convert-byte-array-utf8-string-vb6.asp
et qui s'appuie sur les Stream la bibliothèque ADODB

2 réponses

noctambule28 Messages postés 31791 Date d'inscription samedi 12 mai 2007 Statut Webmaster Dernière intervention 13 février 2022 5
17 déc. 2013 à 13:19
Salut Jack,

Et pourquoi ne pas mettre cette méthode dans la FAQ plutôt que dans le forum, elle se perdra moins qu'ici ?

0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
Modifié par cs_Jack le 17/12/2013 à 14:49
Quoi ?
On a une FAQ (Tutos) ?

Non, je plaisante.
Oui, tu as tout à fait raison.
Je copie-colle.

Vala
Jack [MVP VB]
NB : Je ne répondrai pas aux messages privés
0
Rejoignez-nous