我打算在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