J'essaie d'envoyer des paquets de texte sur le réseau en utilisant winsock. Cependant le texte est stocké comme wchar_t et je dois pouvoir convertir le texte en format byte (char) pour l'envoi sur le réseau, qui sera alors converti en wchar_t.Envoi de paquets de texte Unicode (win32) sur le réseau à l'aide de winsock?
J'ai expérimenté l'utilisation de ostringstream et j'ai converti la chaîne wchar_t de la mienne en un format qui ressemble à un byte, mais quand j'essaye de faire marche arrière, je reçois un tas de charabia.
Je n'arrive pas à trouver de réponses lorsque vous cherchez en ligne, donc toute aide serait grandement appréciée.
OK, voici un code avec lequel j'ai joué.
std::wstring text(ieS("Hello"));
std::ostringstream ostr;
ostr.imbue(std::locale());
ostr << text.c_str();
std::string text2 = ostr.str();
Convertir en std :: string pour obtenir le format char.
std::wostringstream wostr;
wostr.imbue(std::locale());
wostr << text2.c_str();
text = oss.str(); // gibberish
reconvertir à std :: wstring pour obtenir le format wchar_t ...
Publier du code. –
Vous devez regarder de plus près comment Unicode est représenté - il semble que vous ayez des hypothèses sur la longueur, etc. Quand les octets arrivent, vous devez fournir suffisamment d'informations pour savoir comment décoder les octets en un caractère Unicode. –
Vous devriez probablement utiliser UTF-8 quand les choses se passent sur le réseau dans tous les cas. –