Envoi de l'UTF-8 avec les sockets

Je suis tring à l'installation d'un petit programme de chat en python. Tout fonctionnait bien, jusqu'à ce que je
envoyé une chaîne de caractères contenant un non ascii caractère qui a causé la panne du programme. La chaîne sont lues à partir d'un wx.TestCtrl

  • Comment puis-je envoyer une chaîne de caractères avec l'encodage UTF-8 sur les sockets?

  • Pourquoi le programme fonctionne sans problèmes au début? J'ai mis le codage UTF-8
    donc ne pas tous les caractères causer la panne du programme?

Voici l'erreur:

Traceback (most recent call last):
  File "./client.py", line 180, in sendMess
    outSock.sendto(s,self.serveraddr)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 26: 
                    ordinal not in range(128)

Voici comment j'ai créer le socket et essayez d'envoyer le message:

  outSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
  ....
  outSock.sendto(s,self.serveraddr)
  • stackoverflow.com/questions/1644640/...
  • Merci! Donc, il n'y a pas moyen d'envoyer la chaîne sans les décoder?
  • Vous n'avez pas de décoder les envoyer, vous encodez - vous de prendre vos chaînes unicode (qui ne sont pas en UTF-8, ou au moins ne pas le faire), de les convertir en octets, et d'envoyer les octets. Voir aussi nedbatchelder.com/text/unipain.html pour plus d'informations de fond.
  • Les données que vous envoyez sur le socket est juste un flux d'octets, le socket ne sais pas ou les soins de ce qu'il est. C'est au récepteur de décoder les données d'une manière significative.
InformationsquelleAutor nist | 2012-03-17