我打算在python中设置一个小聊天程序。一切工作正常,直到我 发送一个字符串包含一个非ASCII字符,导致程序崩溃。该字符串从wx.TestCtrl读取用套接字发送UTF-8
如何发送字符串与UTF-8编码通过套接字?
为什么程序一开始就没有问题?我已经将编码设置为UTF-8 ,那么所有字符都不会导致程序崩溃?
以下是错误:
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)
这里是我创建套接字,并尝试发送邮件:
outSock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
....
outSock.sendto(s,self.serveraddr)
http://stackoverflow.com/questions/1644640/how-to-handle- unicode-non-ascii-characters-in-python – 2012-03-17 18:17:31
谢谢!所以没有办法发送字符串而不解码它? – nist 2012-03-17 18:20:10
你不解码发送,你*编码* - 你把你的unicode字符串(它是*不* UTF-8,或至少不必),将它们转换为字节,并发送这些字节。另请参阅http://nedbatchelder.com/text/unipain.html了解更多背景信息。 – delnan 2012-03-17 18:20:29