Comm WinSock VB6 <-> VB.Net (Encoding, UTF-8, Unicode)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
17 déc. 2013 à 12:35
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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.